以 .NET Framework 為目標時使用的預設 RID
在 .NET 8 中,在以 net8.0
和更新版本為目標時,會引進 使用較小的運行時間標識符 (RID) 圖形。
不過,這會對同時目標 .NET 和 .NET Framework 的客戶造成問題。 這是因為還原發生一次,但 .NET Framework 項目會嘗試使用舊的 RID 預設值,而 .NET (Core) 專案會嘗試使用新的縮減 RID 圖形。
若要啟用此多目標案例,此案例中現在會使用與新 RID 圖形相容的預設 RID。
引進的版本
.NET 9 GA
先前的行為
未設定 RID 的以 .NET Framework 為目標的 SDK 樣式專案預設為 win7-x86
或 win7-x64
。
新行為
以 .NET Framework 為目標且未設定 RID 的 SDK 樣式項目預設為 win-x86
或 win-x64
。
中斷性變更的類型
這項變更可能會影響 來源相容性。
變更的原因
.NET Framework 應用程式取得與通用 RID 圖形不相容的預設 RID。 這種不相容導致還原錯誤:
Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(266,5): 錯誤NETSDK1047:資產檔案 'D:\1\s\artifacts\obj\MSBuild\project.assets.json' 沒有 'net472/win7-x64' 的目標。 請確定還原操作已執行,且您已在專案的 TargetFrameworks 中包含「net472」。 您可能也需要在專案的 RuntimeIdentifiers 中包含 『win7-x64』。 [MSBuild.csproj::TargetFramework=net472]>
如需詳細資訊,請參閱 dotnet/sdk 問題 #35575。
建議的動作
如果您受到這項變更的影響,請選擇下列其中一個動作:
將您的運行時間識別碼更新為可攜式 RID 圖形所支援的值。 專案檔範例:
<PropertyGroup> <RuntimeIdentifier>win-x64</RuntimeIdentifier> </PropertyGroup>
如果您將 RID 指定為命令行自變數,請進行類似的變更。 例如,
dotnet publish --runtime win-x64
。將項目檔中的
UseRidGraph
設定為true
,以切換回舊的 RID 圖形:<PropertyGroup> <UseRidGraph>true</UseRidGraph> </PropertyGroup>
受影響的 API
沒有。