.NET Framework をターゲットにするときに使用される既定の RID
.NET 8 では、net8.0
以降のバージョンを対象とする場合に、より小さいランタイム識別子 (RID) グラフを使用する変更 が 導入されました。
ただしこの変更により、.NET と .NET Framework をマルチターゲットとしている環境で混乱が生じました。 これは、復元は 1 回行われますが、.NET Framework プロジェクトは古い RID の既定値を使用しようとし、.NET (Core) プロジェクトは新しい縮小された RID グラフの使用を試みるためです。
このマルチターゲット シナリオを有効にするために、このシナリオでは、新しい RID グラフと互換性のある既定の RID が使用されるようになりました。
導入されたバージョン
.NET 9 GA
以前の動作
RID が設定されていない .NET Framework を対象とする SDK スタイルのプロジェクトは、既定で win7-x86
または win7-x64
に設定されます。
新しい動作
RID が既定で win-x86
または win-x64
に設定されていない .NET Framework を対象とする SDK スタイルのプロジェクト。
破壊的変更の種類
この変更は、ソースの互換性に影響を与える可能性があります。
変更の理由
.NET Framework アプリケーションでは、ポータブル RID グラフと互換性のない既定の RID が取得されていました。 その非互換性により、復元エラーが発生しました。
Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(266,5): エラー NETSDK1047: Assets ファイル '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
何一つ。
.NET