次の方法で共有


.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

何一つ。