.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-x64
,dotnet publish --framework net8.0 --runtime win10-x64
而不是 。
如果您需要還原為使用舊、完整 RID 圖形的先前行為,您可以將 UseRidGraph
MSBuild 屬性設定為專案檔中的 true
。 不過,未來不會更新舊的 RID 圖形,以嘗試處理任何其他散發版本或架構。
<PropertyGroup>
<UseRidGraph>true</UseRidGraph>
</PropertyGroup>