创建 NuGet 包:NU5128 异常 - 不清楚如何修复

Creating NuGet package: NU5128 exception - not clear on how to fix

我有一个寻址 .NET 4.7.1 库的 DLL。

可能不相关,但它是用 C# 编写的,使用 "packages.config" 模式而不是较新的 PackageReference 配置来使用 NuGet 包。

我将其作为 NuGet 包发布(多年来一直这样做)。但是现在当我执行以下命令时:

nuget pack -Properties Configuration=Release

我收到以下警告:

Error NU5128: Some target frameworks declared in the dependencies group of the nuspec and the lib/ref folder do not have exact matches in the other location. Consult the list of actions below: - Add a dependency group for .NETFramework4.7.1 to the nuspec

我在 nuspec 的依赖组中没有任何东西:

<?xml version="1.0"?> 
<package >   
    <metadata>
        <id>*******</id>
        <version>*******</version>
        <title>*******</title>
        <authors>*******</authors>
        <owners>*******</owners>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>*******</description>
        <releaseNotes>*******</releaseNotes>
        <copyright>*******</copyright>
        <tags>*******</tags>
   </metadata> 
</package>

这会消耗以下 NuGet 包:

当我查看参考资料时,我看到以下内容(使用 ~ 来缩短路径):

所以在我看来,一切看起来都与 .NET 4.7.1 兼容,那么为什么会出现这个警告?

根据NuGet Warning NU5128中给出的细节,我因此添加了一个依赖组:

<?xml version="1.0"?> 
<package >   
    <metadata>
        <id>*******</id>
        <version>*******</version>
        <title>*******</title>
        <authors>*******</authors>
        <owners>*******</owners>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>*******</description>
        <releaseNotes>*******</releaseNotes>
        <copyright>*******</copyright>
        <tags>*******</tags>
        <dependencies>
          <group targetFramework=".NETFramework4.7.1" />
        </dependencies>
   </metadata> 
</package>

但这没有效果,我仍然得到错误。

根据NU5128 doc, This warning was added during NuGet 5.3's development, and first was available in .NET Core SDK 3.0 Preview 9. NuGet/Home#8583 tracks an issue where the warning was being raised in too many scenarios. You can use the NoWarn MSBuild property (add $(NoWarn);NU5128 to any PropertyGroup in your project file). If you have multiple projects affected, you can use Directory.Build.targets自动将NoWarn添加到所有项目

从 Nuget 5.7 开始,这现在被报告为 Nuget CLI 的错误 (https://github.com/NuGet/Home/issues/7404) - 所以我们的管道开始失败,即使我们之前有过这个错误。

如上所述,我们最终在相关 csproj 文件中使用了 Nowarn 方法 - 但我想补充一点,这可能会突然导致已经 运行 个管道出现问题。

如果您收到此警告,但在 the reference page

上没有任何效果
  • 将 .nupkg 打开为 zip 文件。

  • 找到 .nuspec 文件并打开它。

  • <dependencies>中像这样添加你的目标框架

    <group targetFramework=".NETFramework4.7.2" />
    
  • 保存文件(WinZip 让您无需解压即可完成所有这些操作 re-zipping)

  • 再次将 .nupkg 发布到您的 nuget 存储库。

这很烦人,但这是唯一对我有用的东西。