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) 的至少一个对应文件。 但是,nuspec 文件中不存在针对此 TFM 的依赖项组。 这可能会导致包使用者认为此包与 TFM 不兼容。 如果指定 TFM 的对应程序集的依赖项与依赖项组中所定义兼容 TFM 的依赖项有所不同,则使用此包的项目可能会出现运行时故障。

解决方案

  • 对项目运行 NuGet 的 pack target

如果可能,请使用 NuGet 的 MSBuild pack target,因为它会自动将程序集 TFM 与项目的目标框架中的依赖项组进行匹配。 请注意,项目必须将 PackageReference 用于自己的 NuGet 依赖项。 如果项目使用 packages.config,则需使用 nuget.exe packnuspec 文件。

  • 手动编辑 nuspec 文件

如果使用的是自定义 nuspec 文件,则建议 lib/ref/ 程序集为其而存在的每个 TFM 均有匹配的依赖项组,即使这些依赖项与下一兼容 TFM 的依赖项相同。 例如,如果包含有 netstandard1.0netstandard2.0 程序集,且两者的依赖项相同,则建议将这两个 TPM 列为具有重复依赖项的依赖项组。

请注意,程序集路径中使用的 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/* 文件。