NuGet 警告 NU5130
Some target frameworks declared in the dependencies group of the nuspec and the lib/ref folder have compatible matches, but not exact matches in the other location. Unless intentional, consult the list of actions below: - Add a dependency group for .NETFramework4.7.2 to the nuspec
問題点
lib/<tfm>/
パッケージ内のディレクトリref/<tfm>/
に、警告メッセージで指定されたターゲット フレームワーク モニカー (TFM) のファイルが少なくとも 1 つ含まれています。 ただし、この TFM では、nuspec
ファイル内に依存関係グループは存在しません。 これにより、パッケージ コンシューマーによってパッケージが TFM と互換性がないとみなされる可能性があります。 指定の TFM のアセンブリが、依存関係グループで定義された互換性のある TFM とは異なる依存関係を持っている場合、パッケージを使用しているプロジェクトに、実行時エラーが発生する可能性があります。
解決策
- プロジェクト内で NuGet のパック ターゲットを実行する
可能であれば、NuGet の MSBuild パック ターゲットを使用 します。これは、プロジェクトのターゲット フレームワークの依存関係グループを持つアセンブリ TFM と自動的に一致します。 プロジェクトは、それぞれの NuGet 依存関係で PackageReference
を使用する必要があります。 プロジェクトで packages.config を使用する場合は、nuget.exe pack
およびnuspec
ファイルを使用する必要があります。
nuspec
ファイルを手動で編集する
カスタムnuspec
ファイルを使用している場合は、依存関係が次の互換性のある TFM と同じであっても、lib/
またはref/
のアセンブリが存在する各 TFM に一致する依存関係グループを含めることをおすすめします。 例えば、パッケージ内にnetstandard1.0
およびnetstandard2.0
アセンブリーが含まれており、依存関係が両方とも同じである場合は、重複する依存関係項目を「依存関係グループ」として、両方のTFM をリスト表示できます。
ノート: アセンブリ パスで使用される TFM 識別子は、依存関係グループで使用される TFM 識別子とは異なる形式を使用します。 警告メッセージでは、依存関係グループ内で使用するために、適切な名前を特定します。 パッケージに、そのターゲット フレームワークでの依存関係がまったくない場合は、空のグループを使用します。 次に例を示します。
<package>
<metadata>
...
<dependencies>
<group targetFramework=".NETFramework4.7.2" />
</dependencies>
</metadata>
...
<package>
lib/
またはref/
ファイルを削除
報告された TFM とパッケージが互換性を持たないようにするには、その TFM のパッケージにlib/<tfm>/
またはref/<tfm>/
ファイルが含まれないように、プロジェクトを変更します。 例えば、.NETFramework4.7.2
の依存関係グループをnuspec
に追加するように警告で表示されている場合は、お使いのパッケージから任意のlib/net472/*
およびref/net472/*
ファイルを削除します。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示