上篇文章给大家分享了
.NET 10 & C# 14 New Features 新增功能介绍-扩展成员Extension Members
今天继续给大家分享:.NET CLI工具的改进:
目前支持在单个包中发布支持多个 RuntimeIdentifier (RID)的。,可以捆绑所有受支持平台的二进制文件,.NET CLI 将在安装或运行时选择正确的二进制文件。
这使得跨平台工具创作和分发更加容易。这些改进的工具支持各种场景:
- 依赖于框架,平台无关(经典模式,任何安装了 .NET 10 的地方都可以运行)
- 框架依赖,平台特定(更小,针对每个平台进行优化)
- 自包含,平台特定(包含运行时,无需安装 .NET)
- 裁剪版,平台特定 (更小,裁剪未使用的代码)
- 平台特定的 AOT 编译(最大性能和最小部署)
这些新工具的工作方式与常规的已发布应用程序非常相似。因此,任何可用于应用程序的发布选项(例如,自包含、剪裁或 AOT 编译)也同样适用于这些工具。
特定于平台的 .NET 工具功能非常适合确保针对预先面向的特定平台优化工具。
但是有时你不知道要面向的所有平台,有时 .NET 本身将了解如何支持新平台,并且你也希望工具可以在那里运行。
若要使工具以这种方式工作,请将 any 运行时标识符添加到项目文件:
<PropertyGroup>
<RuntimeIdentifiers>
linux-x64;
linux-arm64;
macos-arm64;
win-x64;
win-arm64;
any
</RuntimeIdentifiers>
</PropertyGroup>
此 RuntimeIdentifier 位于平台兼容性检查的"根"位置,由于它声明了对 任何 平台的支持,
因此打包的工具将是最兼容的工具类型-一种依赖于框架且与平台无关的 .NET DLL,这需要兼容的 .NET 运行时才能执行。
执行创建工具的 dotnet pack 时,会看到一个用于 any RuntimeIdentifier 的新包,与其他特定于平台的包以及顶级清单包一起显示。
关于dotnet tool exec
dotnet tool exec 可以使用命令执行 .NET CLI,而无需全局或本地安装。 这对于 CI/CD 或临时使用场景尤其有用。
dotnet tool exec --source ./artifacts/package/ dotnetsay "Hello, World!"
关于dotnetsay
dnx 脚本提供了一种简化的方式来执行工具。 它将所有参数转发到 dotnet CLI 进行处理,使工具的使用尽可能简单
dnx dotnetsay "Hello, World!"
关于dotnet CLI指令重命名

新的别名更符合各类CLI 标准,使 dotnet CLI 与其他工具更加一致。
周国庆
20260223