このパッケージには lib/ または ref/ フォルダーが含まれていないため、すべてのフレームワークに互換性があるものとして扱われます。 net45 の netstandard2.0 のビルド/ディレクトリの下にフレームワーク固有のファイルが見つかったため、パッケージの互換性を正しく絞り込むために、次の空のファイルを作成することを検討してください。
-lib/net45/.
-lib/netstandard2.0/.
問題点
PackageReference
を含むパッケージを使用するプロジェクトでは、パッケージの互換性を判断するためにlib/
アセンブリとref/
アセンブリのみが使用されます。
したがって、 lib/
または ref/
ファイルのないパッケージは、すべてのプロジェクトと互換性があるとみなされます。
ただし、1 つ以上のターゲット フレームワークに固有の MSBuild プロパティまたはターゲットを含むパッケージは、それらのターゲット フレームワークとのみ互換性があることを意図しています。
たとえば、パッケージ PackageA
に 1 つのファイル ( build/net8.0/PackageA.targets
) が含まれているとします。
このパッケージが net48
(.NET Framework、バージョン 4.8) を対象とするプロジェクトによって参照されている場合、NuGet は警告やエラーを出力しませんが、パッケージからアセットも選択しません。
そのため、パッケージ コンシューマーには、パッケージがプロジェクトで正しく動作しないことが通知されません。
解決策
警告メッセージが示すように、リストされている TFM の lib フォルダーに _._
という名前の空のファイルを作成します。
これにより、プロジェクトがパッケージと互換性がない場合、NuGet は PackageReference
プロジェクトの復元に失敗します。
パッケージがすべてのターゲット フレームワークと互換性を持ち、特定のターゲット フレームワークでのみ有効になる場合は、コンテンツが<Project />
ファイル build/{PackageId}.props
を作成します。