【问题标题】:Creating NuGet package: NU5128 exception - not clear on how to fix创建 NuGet 包:NU5128 异常 - 不清楚如何修复
【发布时间】:2020-02-16 15:16:38
【问题描述】:

我有一个针对 .NET 4.7.1 库的 DLL。

可能无关紧要,但它是用 C# 编写的,并使用“packages.config”模式而不是较新的 PackageReference 配置来使用 NuGet 包。

我将它作为 NuGet 包发布(已经这样做了好几年了)。但是现在当我执行以下操作时:

nuget pack -Properties Configuration=Release

我收到以下警告:

错误 NU5128:在依赖项中声明了一些目标框架 nuspec 组和 lib/ref 文件夹没有完全匹配 在另一个位置。请参阅以下操作列表: - 为 .NETFramework4.7.1 添加一个依赖组到 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 包:

  • Microsoft.AspNet.WebApi.Client v5.2.7
  • Microsoft.AspNet.WebApi.Core v5.2.7
  • Microsoft.CodeAnalysis.FxCopAnalyzers v2.9.8
  • Microsoft.CodeAnalysis.VersionCheckAnalyzer v2.9.8
  • Microsoft.CodeQuality.Analyzers v2.9.8
  • Microsoft.NetCore.Analyzers v2.9.8
  • Microsoft.NetFramework.Analyzers v2.9.8
  • Newtonsoft.Json v12.0.3
  • StyleCop.Analyzers v1.1.118

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

  • Microsoft.CSharp ~.NETFramework\v4.7.1\Microsoft.CSharp.dll
  • Newtonsoft.Json ~\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll
  • 系统 ~\NETFramework\v4.7.1\System.dll
  • System.Configuration ~.NETFramework\v4.7.1\System.Configuration.dll
  • System.Core ~.NETFramework\v4.7.1\System.Core.dll
  • System.Data ~.NETFramework\v4.7.1\System.Data.dll
  • System.Data.DataSetExtensions ~.NETFramework\v4.7.1\System.Data.DataSetExtensions.dll
  • System.Net.Http ~.NETFramework\v4.7.1\System.Net.Http.dll
  • System.Net.Http.Formatting ~\packages\Microsoft.AspNet.WebApi.Client.5.2.7\lib\net45\System.Net.Http.Formatting.dll
  • System.Web.Http ~\packages\Microsoft.AspNet.WebApi.Core.5.2.7\lib\net45\System.Web.Http.dll
  • System.Xml ~.NETFramework\v4.7.1\System.Xml.dll
  • System.Xml.Linq ~.NETFramework\v4.7.1\System.Xml.Linq.dll

所以在我看来,一切看起来都与 .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>

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

【问题讨论】:

标签: .net nuget nuget-package nuspec


【解决方案1】:

根据NU5128 文档,此警告是在 NuGet 5.3 的开发过程中添加的,并且首先在 .NET Core SDK 3.0 预览版 9 中可用。NuGet/Home#8583 跟踪在太多场景中引发警告的问题.您可以使用 NoWarn MSBuild 属性(将 $(NoWarn);NU5128 添加到项目文件中的任何 PropertyGroup)。如果您有多个项目受到影响,您可以使用Directory.Build.targets 自动将 NoWarn 添加到所有项目中

【讨论】:

    【解决方案2】:

    从 Nuget 5.7 开始,这现在报告为来自 Nuget CLI (https://github.com/NuGet/Home/issues/7404) 的错误 - 因此,即使我们之前遇到过此错误,我们的管道也开始失败。

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

    【讨论】:

      【解决方案3】:

      如果您收到此警告并且在 the reference page 上没有任何效果,

      • 将 .nupkg 作为 zip 文件打开。

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

      • &lt;dependencies&gt; 中像这样添加你的目标框架

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

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

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

      【讨论】:

      • 如何将 .nupkg 打开为 zip 文件?
      • .nupkg 只是一个扩展名为 .nupkg 而不是 .zip 的 zip 文件。您可以将其临时重命名为 .zip,或者在 WinZip 中您可以转到打开并选择右下角的任何文件,然后浏览文件。
      猜你喜欢
      • 1970-01-01
      • 2015-11-09
      • 1970-01-01
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多