次の方法で共有


NETSDK1071: フレームワークに含まれるメタパッケージに対して PackageReference を明示的にバージョン管理しました。

この記事の対象: ✔️ .NET 5.0.100 SDK 以降のバージョン

.NET SDK が警告NETSDK1071を発行すると、PackageReference で指定されたメタパッケージのバージョンと、TargetFramework プロパティを介して暗黙的に参照されるメタパッケージのバージョンとの間に、将来バージョンの競合が発生する可能性があることを示唆しています。

<PropertyGroup>
  <TargetFramework>net6.0</TargetFramework>
</PropertyGroup>

TargetFrameworkはメタパッケージのバージョンを自動的に取り込むので、バージョンが異なる場合はバージョンが競合します。

これを解決するには:

  1. .NET Core または .NET Standard を対象とする場合は、プロジェクト ファイル内の Microsoft.NETCore.App または NETStandard.Library への明示的な参照を回避することを検討してください。

  2. .NET Core をターゲットにするときに特定のバージョンのランタイムが必要な場合は、メタパッケージを直接参照するのではなく、 <RuntimeFrameworkVersion>プロパティを使用します。 たとえば、 自己完結型のデプロイ を使用していて、1.0.0 LTS ランタイムの特定のパッチが必要な場合に、これが発生する可能性があります。

  3. .NET Standard をターゲットにするときに特定のバージョンの NetStandard.Library が必要な場合は、 <NetStandardImplicitPackageVersion> プロパティを使用して、必要なバージョンに設定できます。

  4. .NET Framework プロジェクトの Microsoft.NETCore.App または NETSTandard.Library への参照を明示的に追加または更新しないでください。 NuGet は、.NET Standard ベースの NuGet パッケージを使用するときに必要な NETStandard.Library の任意のバージョンを自動的にインストールします。

  5. .NET Core 2.1 以降を使用する場合は、 Microsoft.AspNetCore.App または Microsoft.AspNetCore.All のバージョンを指定しないでください。.NET SDK によって適切なバージョンが自動的に選択されるためです。 (注: これは、プロジェクトで Microsoft.NET.Sdk.Web も使用されている場合にのみ、.NET Core 2.1 をターゲットとする場合にのみ機能します。この問題は、.NET Core 2.2 SDK で解決されました。

  6. 警告を削除する場合は、無効にすることもできます。

    <PackageReference Include="Microsoft.NetCore.App" Version="2.2.8" >
      <AllowExplicitVersion>true</AllowExplicitVersion>
    </PackageReference>