シナリオ
プロジェクト '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します。