.net NuGet依赖项-指定targetFramework时收到NU 5128警告

pwuypxnk  于 2023-05-19  发布在  .NET
关注(0)|答案(2)|浏览(199)

我有一个针对.NET Framework 4的项目。我使用nuget.exe(版本5.6.0.6591)创建NuGet包。项目本身除了Microsoft.CSharpSystem程序集之外没有其他引用(这些程序集都没有特定的版本集)。
首先,我创建了一个MyProject.nuspec文件(通过在MyProject.csproj文件夹中运行nuget spec)。然后我试着运行nuget pack MyProject.csproj并得到了NuGet包(.nupkg存档)。但我也得到了这个警告:

WARNING: 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.0 to the nuspec

根据https://learn.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu5128,我修改了我的.nuspec文件,现在它看起来像这样(注意<dependencies>标签):

<?xml version="1.0" encoding="utf-8"?>
<package>
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>$author$</authors>
    <owners>$author$</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>$description$</description>
    <releaseNotes></releaseNotes>
    <copyright>Copyright 2020</copyright>
    <tags>my tags here</tags>
    <dependencies>
      <group targetFramework=".NETFramework4.0" />
    </dependencies>
  </metadata>
</package>

但是,我仍然收到了警告。当我打开生成的.nupkg归档文件中的.nuspec文件时,那里只有空的<dependencies />标记。
我发现的一个解决方法是替换.nuspec文件中的变量,并调用nuget pack MyProject.nuspec而不是nuget pack MyProject.csproj。然后,我在生成的.nupkg归档文件中获得了这个相同的.nuspec文件,包括目标框架依赖项。但是这剥夺了我让nuget自动为我填写版本的权利。
无论哪种方式,当我用-Verbosity detailed运行nuget pack时,我看到Dependendecies是空的:

Id: MyId
Version: 1.0.0
Authors: Me
Description: My description
Tags: my, tags, here
Dependencies:

看起来当我在.csproj上调用nuget pack时,它填充了变量,但它也删除了依赖项,因为它认为它们是空的,但之后它给了我警告。如果我在.nuspec上调用nuget pack,它会按原样打包它,包括依赖项,从而避免警告。
有什么想法可以解决警告,同时让nuget填充变量?我的包中没有指定目标框架,这一事实会对使用该包的任何人产生负面影响吗?

m2xkgtsf

m2xkgtsf1#

5.2.0版本也可以。我无法解决比此版本更新的版本(最高版本5. 8. 1)的问题。

mwg9r5ms

mwg9r5ms2#

我也有同样的问题。有关警告NU5128(场景1)suggests running nuget's pack target on the project而不是调用nuget pack的文档。请注意,这需要您的项目使用PackageReference作为其自己的nuget依赖项。
在安装NuGet.Build.Tasks.Pack包并使用msbuild -t:pack -p:Authors=JustAGuy构建之后,我得到了自动生成的nuspec依赖项。

相关问题