共用方式為


以 .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-x86win7-x64

新行為

以 .NET Framework 為目標且未設定 RID 的 SDK 樣式項目預設為 win-x86win-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

沒有。