次の方法で共有


NuGet 警告 NU5127

このパッケージには 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を作成します。