我有一个针对.NET Framework 4的项目。我使用nuget.exe
(版本5.6.0.6591
)创建NuGet包。项目本身除了Microsoft.CSharp
和System
程序集之外没有其他引用(这些程序集都没有特定的版本集)。
首先,我创建了一个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
填充变量?我的包中没有指定目标框架,这一事实会对使用该包的任何人产生负面影响吗?
2条答案
按热度按时间m2xkgtsf1#
5.2.0版本也可以。我无法解决比此版本更新的版本(最高版本5. 8. 1)的问题。
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依赖项。