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

DrG*_*iff 6 .net nuget nuget-package nuspec

我有一个指向 .NET 4.7.1 库的 DLL。

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

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

nuget pack -Properties Configuration=Release
Run Code Online (Sandbox Code Playgroud)

我收到以下警告:

错误 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>
Run Code Online (Sandbox Code Playgroud)

这会消耗以下 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 警告 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>
Run Code Online (Sandbox Code Playgroud)

但这没有效果,我仍然收到错误消息。

小智 7

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

将 Nowarn 添加到项目中