NuGet エラー NU1018

シナリオ

プロジェクト 'MyProject' は重複するフレームワークを復元しようとしています。これは、.NET SDK がバージョン 10.0.300 以降の場合にのみ、既定の依存関係リゾルバーでサポートされます。 .NET SDK をアップグレードするか、RestoreUseLegacyDependencyResolver を削除してこの機能を使用します。

問題点

プロジェクト ファイルには、同じ NuGet フレームワークに解決される複数の TargetFrameworks エントリがあります。 このシナリオはフレームワーク エイリアスと呼ばれ、異なる TargetFramework プロパティが同じ基になるフレームワークにマップされます。

たとえば、次のようなプロジェクト ファイルでは、どちらも同じ net9.0 NuGet フレームワークに解決される 2 つのターゲット フレームワークが定義されています。

<PropertyGroup>
  <TargetFrameworks>net9.0-custom1;net9.0-custom2</TargetFrameworks>
</PropertyGroup>

フレームワークのエイリアシングは、既定の依存関係リゾルバーでのみサポートされています。SDK 10.0.300 以降.NET必要です (SdkAnalysisLevel10.0.300 以降)。 レガシ依存関係リゾルバーがアクティブな場合 (SDK のバージョンが古いか、 RestoreUseLegacyDependencyResolver が設定されているため)、アセット ファイル形式は重複するフレームワークをサポートせず、NuGet はこのエラーを発生させます。

ソリューション

このエラーを解決するには、次のいずれかの方法を使用します。

  • フレームワークのエイリアシング .NETをサポートする既定の依存関係リゾルバーを使用する SDK 10.0.300 以降 にアップグレードします。
  • RestoreUseLegacyDependencyResolver プロパティが設定されている場合は、プロジェクト ファイルまたはDirectory.Build.propsから削除します。 これにより、NuGet は既定の依存関係リゾルバーを使用できます。
  • 各ターゲット フレームワークが一意の NuGet フレームワークに解決されるように、 プロパティからTargetFrameworksします。