dotnet-exec 0.18.0 Released

💡 原文中文,约2200字,阅读约需6分钟。
📝

内容提要

dotnet-exec 0.18.0发布,支持.NET 9框架,新增了net9.0的target,支持导出编译的dll,多平台容器镜像,增强了ProjectReference和System.Net.Http.Json命名空间的使用。

🔎

延伸解读

升级到 .NET 9 的实用价值

0.18.0 新增 net9.0 target,安装 .NET 9 SDK 后会自动使用该 target,方便测试 .NET 9 的新 API。同时 Docker 镜像也从 .NET 8 升级到 .NET 9,保持环境一致。对于想快速验证 .NET 9 特性的开发者,这降低了环境配置成本。

导出编译结果与多平台容器支持

新增 --compile-out 参数可导出编译的 dll,支持指定目录或文件名,便于分发或进一步分析。容器镜像新增 linux/arm64 和 linux/arm 架构,此前仅支持 linux/amd64,现在树莓派等 ARM 设备也能直接运行。

ProjectReference 重试机制提升 CI 稳定性

ProjectReference 通过构建项目并引用生成的程序集,但可能因文件占用导致失败。0.18.0 在构建逻辑中加入自动重试,最多 5 次,显著提高成功率,作者反馈 CI 不再报错。这对依赖 ProjectReference 的持续集成流程有实际帮助。

默认命名空间与冲突处理

默认包含 System.Net.Http.Json 命名空间,使用 GetFromJsonAsync/PostAsJsonAsync 等方法时无需手动添加 using。若遇到命名空间冲突,可通过 --using "-System.Net.Http.Json" 移除该引用。这一改动简化了常见 HTTP JSON 操作。

❓

Q&A

dotnet-exec 是什么?它有什么用途?

dotnet-exec 是一个 dotnet tool 命令行小工具,可以帮助我们方便地执行 C# 代码,无需创建项目文件,让 C# 像 python/nodejs 一样简单,并且可以自定义项目的入口方法,支持但不限于 Main 方法。

dotnet-exec 0.18.0 有哪些新特性?

0.18.0 版本新增了 net9.0 target 支持,支持导出编译的 dll(通过 --compile-out),支持多平台容器镜像(linux/arm64 和 linux/arm),增强了 ProjectReference 的重试机制,并默认包含 System.Net.Http.Json 命名空间。

如何安装或更新 dotnet-exec?

可以使用 dotnet tool 命令安装或更新:安装/更新最新稳定版本:dotnet tool update -g dotnet-execute;安装最新的 preview 版本:dotnet tool update -g dotnet-execute --prerelease。

dotnet-exec 0.18.0 如何导出编译的 dll?

使用 --compile-out 参数可以导出编译的 dll,可以指定一个目录,或者一个具体的文件名。

dotnet-exec 0.18.0 对 ProjectReference 做了哪些改进?

在 build project 的逻辑中加入了自动 retry,最多 retry 5 次,以提高 project reference 的成功率,减少 CI 报错。

dotnet-exec 0.18.0 默认包含哪个命名空间?如何移除?

默认包含了 System.Net.Http.Json 命名空间,这样在使用 GetFromJsonAsync/PostAsJsonAsync 等方法时无需再添加命名空间。如果遇到命名空间冲突,可以使用 --using "-System.Net.Http.Json" 来移除。

dotnet-exec 0.18.1 和 0.18.0 有什么区别?

0.18.1 和 0.18.0 的功能一致,只是升级了 Roslyn 的版本。

🏷️

标签

➡️

继续阅读