我试图通过命令行创建一个NuGet包,但我似乎无法弄清楚如何设置描述,作者,标题,摘要,发布注释和所有者。包创建成功它只是给我这个警告:
WARNING: Description was not specified. Using 'Description'.
WARNING: Author was not specified. Using 'User'.
这是我的命令:
NuGet.exe pack "<MyProjectPath>.csproj" -OutputDirectory "<MyOutputDirectory>" -Properties Configuration=release;Description="MyDescription";Authors="MeMeMe...MeToo";Title="MyTitle";Summary="MySummary";releaseNotes="MyChanges;"Owners="MyCompany"
我不确定这是否重要,但我使用的是来自&#34; CredentialProviderBundle.zip&#34;的NuGet.exe。从Visual Studio Team Services下载的文件。
答案 0 :(得分:7)
如果这有助于其他人,则需要获得&#34;描述的愚蠢理由&#34;错误:我没有重建我的项目,因为我在AssemblyInfo中添加了一个描述。
我在项目目录中使用<description>$description$</description>
令牌定义了一个nuspec文件。我跑的时候
nuget pack MyProject.csproj
我看到了&#34;描述是必需的&#34;错误,即使我的AssemblyInfo包含[assembly: AssemblyDescription("A DESCRIPTION.")]
...
...因为虽然您打包了.csproj
,但它是您最近的构建,实际上由Nuget打包。 d&#39;哦
答案 1 :(得分:6)
这个命令实际上几乎没有任何问题。
在没有先决条件的情况下,问题无法解决。
以下是此特定示例的* .nuspec文件示例:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>$Id$</id>
<version>$Version$</version>
<title>$Title$</title>
<authors>$Authors$</authors>
<owners>$Owners$</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$Desc$</description>
<summary>$Summary$</summary>
<releaseNotes>$ReleaseNotes$</releaseNotes>
<copyright>Copyright © 2016</copyright>
<dependencies />
</metadata>
</package>
ID和版本不需要令牌,因为它们会自动被覆盖,但不会受到影响。
以下是您应该使用上面指定的* .nuspec文件的命令行:
NuGet.exe pack "<MyProjectPath>.csproj" -OutputDirectory "<MyOutputDirectory>" -Properties Configuration=release;Desc="MyDescription";Authors="MeMeMe...MeToo";Title="MyTitle";Summary="MySummary";ReleaseNotes="MyChanges;"Owners="MyCompany"
答案 2 :(得分:0)
我知道这已经很老了,但我今天一直在努力解决这个问题。我在跑
zIndex
我得到了&#39;需要说明&#39;错误。
我最后删除了nuspec文件并让nuget通过运行
来创建一个新文件 nuget pack SomeRandom.csproj -Properties Configuration=Release
然后当我运行nuget pack时它工作正常。很奇怪,但可以帮助别人。
答案 3 :(得分:0)
对我来说,解除阻止 nuget.exe 就成功了。从 NuGet 5.7 开始,此 seems to be necessary.
答案 4 :(得分:-1)
只是添加到这篇文章,因为这些都没有完全帮助我,运行命令
nuget pack
这将在您的解决方案的基础上为您创建一个Package.nuspec
文件。完成此操作后,您必须将文件重命名为NameOfProject.nuspec
。因此,如果我的项目被调用GameEngine.csproj
,那么我会将nuspec
文件重命名为GameEnginer.csproj
。然后,将此文件移动到.csproj所在的文件夹中(不是调试/发布文件夹,只是包含所有手写代码文件的基本文件夹)。然后继续运行
nuget pack RelativePathOfNameOfProject.csproj
因此,如果我想点击我的GameEngine.csproj
,那么命令看起来就像
nuget pack .\GameEngine\GameEngine.csproj
由于我的文件夹结构类似于:
root/
├── Folder1/
├── Folder2/
├── GameEngine/
│ ├── bin/
│ ├── obj/
│ ├── Properties/
│ ├── Class1.cs
│ ├── Class2.cs
│ ├── GameEngine.nuspec
│ └── GameEngine.csproj
├── packages/
└── GameEngine.sln/
希望在这些答案之间,您可以弄明白:)