.NET 10 & C# 14 New Features 新增功能介绍-.NET CLI工具改进

上篇文章给大家分享了

.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