共用方式為


.NET SDK 使用較小的 RID 圖形

以 .NET 8 或更新版本為目標的項目現在會使用較小的「可攜式」執行階段識別碼 (RID) 圖形。

先前的行為

.NET SDK 使用複雜的 RID 圖形來判斷建置或發佈專案時的資產。

新的行為

從 .NET 8 開始,.NET SDK 會針對以 .NET 8 或更新版本為目標的專案,使用只包含可攜式 RID 的較小圖形。 這表示 SDK 預設無法辨識版本特定或散發版本特定的 RID。 當您建置專案時,可能會看到下列錯誤(或類似的):

錯誤NETSDK1083:無法辨識指定的 RuntimeIdentifier 'win10-x64'。 如需相關資訊,請參閱 https://aka.ms/netsdk1083

導入的版本

.NET 8 RC 1

中斷性變更的類型

這項變更是行為變更,也可能會影響來源相容性

變更原因

RID 圖形的維護與理解成本高昂,要求 .NET 本身以脆弱的方式進行發行版感知。 .NET 小組和社群會花一些時間更新圖形,並將這類更新備份至舊版。 長期目標是停止更新 RID 圖形、停止讀取它,最終將其移除。 這項中斷性變更是邁向目標的一步。

例如,使用可攜式 RID,例如 、 linux-<arch>linux-musl-<arch>osx-<arch>win-<arch>,而不是版本特定或散發版本特定的 RID,例如 ubuntu.16.04-<arch>osx.10.11-<arch>win10-<arch>

如果您在項目檔中使用 RuntimeIdentifier MSBuild 屬性來指定 RID(*.csproj、*.vbproj 或 *.fsproj),請據以變更它。 例如,在項目檔中將 變更 <RuntimeIdentifier>win10-x64</RuntimeIdentifier><RuntimeIdentifier>win-x64</RuntimeIdentifier>

<PropertyGroup>
  ...
  <RuntimeIdentifier>win-x64</RuntimeIdentifier>
</PropertyGroup>

如果您將 RID 指定為命令行自變數,請進行類似的變更。 例如,使用 命令dotnet publish --framework net8.0 --runtime win-x64dotnet publish --framework net8.0 --runtime win10-x64而不是 。

如果您需要還原為使用舊、完整 RID 圖形的先前行為,您可以將 UseRidGraph MSBuild 屬性設定為專案檔中的 true。 不過,未來不會更新舊的 RID 圖形,以嘗試處理任何其他散發版本或架構。

<PropertyGroup>
  <UseRidGraph>true</UseRidGraph>
</PropertyGroup>

另請參閱