NuGet 警告 NU5131

References were found in the nuspec, but some reference assemblies were not found in both the nuspec and ref folder. Add the following reference assemblies:
- Add AssemblyName.dll to the ref/net472/ directory

問題点

NuGet には、パッケージ作成者がパッケージを使用するプロジェクトでコンパイル時に使用できるアセンブリを選択できるようにする機能があります。

必要な規則に従わない場合、PackageReferenceのパッケージを使用するプロジェクトは、アセンブリがないために実行時に失敗する可能性があります。。

解決策

nuspec ファイルの<references>セクション内のアセンブリの一覧に、ref/<tfm>/に一致するアセンブリが含まれている必要があります。

例えば、次のファイルを含むパッケージがあるとします。

lib\net472\MyLib.dll
lib\net472\MyHelpers.dll
lib\net472\MyUtilities.dll

パッケージ作成者は、パッケージ コンシューマーがMyUtilities.dllを直接呼び出すコードを記述できないようにする必要があるため、nuspec ファイルに以下を追加します。

<references>
    <group targetFramework="net472">
        <reference file="MyLib.dll" />
        <reference file="MyHelpers.dll" />
    </group>
</references>

このパッケージは、PackageReferenceを使用している場合、意図したとおりに動作しなくなります。 これを修正するには、パッケージに次のファイルも含まれていることが必要です。

ref\net472\MyLib.dll
ref\net472\MyHelpers.dll