仅用于发布的自动 RuntimeIdentifier

在 7.0.100 SDK 中,有一个更改是自动将 <RuntimeIdentifier> 添加到具有需要运行时标识符 (RID) 的属性的项目。 这些属性如下所示:

  • SelfContained
  • PublishAot
  • PublishReadyToRun
  • PublishSingleFile
  • PublishSelfContained

但是,除 SelfContained 之外的所有这些属性仅用于发布。 然而,如果这些属性在项目文件中或者被指定为 dotnet 命令的一部分,则为任何 dotnet 操作添加了隐式 <RuntimeIdentifier>

现在,这些属性的自动 RID(不包括 SelfContained)仅在发布期间添加。 此外,只有在使用 dotnet publish CLI 命令时才添加自动 RID。 当从 Visual Studio 或 msbuild 发布时,不会添加它,因为它们是独立的机制,并且 Visual Studio 应该提供自己的 RID。

引入的版本

.NET 7.0.200 SDK

旧行为

以前,如果指定了上述任何属性,RID 将自动添加到项目中。

新行为

仅为 dotnet publish 命令自动添加 RID。

如果在 .NET 7 中执行了没有 RID 的还原,并使用它来还原具有上述属性之一的项目上的 publish --no-restore 命令,则需要使用 dotnet restore -r <RID> 指定 RID。

中断性变更的类型

此项更改可能会影响二进制兼容性源兼容性

更改原因

RID 更改是一项中断性变更,不需要更改发布属性来破坏 dotnet build 和其他与发布无关的命令。

对于 restore 后跟 publish --no-restore 之类的操作,必须使用 dotnet restore -r RID 添加 RID。 在这种情况下,最好在发布时进行显式操作,以便发布具有相同的 RID(使用 dotnet publish -r RID)。 此外,也可以从 publish 命令中删除 --no-restore

对于其他所有内容,无需执行任何操作。 但是,如果你想要保留 RID,请将其添加到项目文件中,如下所示:<RuntimeIdentifier>win-x64</RuntimeIdentifier>

请参阅