Nuget.exe包警告:未指定说明。使用'说明'

时间:2016-11-13 05:09:10

标签: nuget

我试图通过命令行创建一个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下载的文件。

5 个答案:

答案 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)

这个命令实际上几乎没有任何问题。

在没有先决条件的情况下,问题无法解决。

  1. * .cus目录中的* .nuspec文件必须与* .csproj具有相同的名称。
  2. * .nuspec文件必须包含您尝试通过命令行设置的所有元素
  3. 将通过命令行填充的所有元素必须包含“$ tokenName $”形式的标记
  4. 在命令行中,您不能指定* .nuspec元素名称,而是指定美元符号之间的值(AKA,令牌名称)
  5. 令牌名称可能与问题中列出的所有属性的元素名称相同,但Description元素除外。 Description元素的标记不能命名为“Description”。 “Desc”在这里完美无缺。 (这就是为什么我说问题中列出的命令几乎没有错误)
  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.

Unblock nuget.exe

答案 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/

希望在这些答案之间,您可以弄明白:)