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

Nuget.exe包警告:未指定说明。使用';说明';,nuget,Nuget,我试图通过命令行创建一个NuGet包,但我似乎不知道如何设置描述、作者、标题、摘要、发行说明和所有者。软件包成功创建它只是给了我以下警告: WARNING: Description was not specified. Using 'Description'. WARNING: Author was not specified. Using 'User'. 这是我的命令: NuGet.exe pack "<MyProjectPath>.csproj" -OutputDirector

我试图通过命令行创建一个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"
NuGet.exe pack.csproj“-OutputDirectory”“-Properties Configuration=release;Description=“MyDescription”;作者=“MeMeMe…MeToo”;Title=“MyTitle”;Summary=“MySummary”;releaseNotes=“MyChanges;”所有者=“MyCompany”

我不确定这是否重要,但我使用的是从Visual Studio Team Services下载的“CredentialProviderBundle.zip”文件中得到的NuGet.exe。

该命令实际上几乎没有问题

如果没有一些先决条件,就不可能做问题所要求的事情

  • 在与*.csproj相同的目录中,必须有一个*.nuspec文件,其确切名称与*.csproj相同
  • *.nuspec文件必须包含您试图通过命令行设置的所有元素
  • 将通过命令行填充的所有元素必须包含格式为“$tokenName$”的标记
  • 在命令行中,您不能指定*.nuspec元素名称,而是指定美元符号之间包含的值(也称为令牌名称)
  • 除了Description元素外,令牌名称可以与问题中列出的所有属性的元素名称相同。描述元素的标记不能命名为“Description”。“Desc”在这里非常好用。(这就是为什么我对问题中列出的命令几乎没有任何错误)
  • 以下是用于此特定示例的*.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$
    $Version$
    $Title$
    $Authors$
    $Owners$
    假的
    $Desc$
    美元摘要$
    $ReleaseNotes$
    版权所有©2016
    
    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"
    
    NuGet.exe pack.csproj“-OutputDirectory”“-Properties Configuration=release;Desc=“MyDescription”;作者=“MeMeMe…MeToo”;Title=“MyTitle”;Summary=“MySummary”;ReleaseNotes=“MyChanges;”所有者=“MyCompany”
    
    我知道这是一个相当古老的问题,但今天我已经为这个问题挣扎了一段时间。我在跑步

    nuget pack SomeRandom.csproj-Properties Configuration=Release

    我得到的是“需要说明”错误

    最后,我删除了nuspec文件,并通过运行

    numget spec SomeRandom.csproj


    然后当我运行nuget pack时,它运行良好。奇怪,但是可以帮助某人。

    只是为了补充一下,因为这两个都不能完全帮助我,所以运行命令

    nuget pack
    
    这将在解决方案的基础上为您创建一个
    Package.nuspec
    文件。完成此操作后,必须将文件重命名为
    NameOfProject.nuspec
    。因此,如果我的项目名为
    GameEngine.csproj
    ,那么我将把
    nuspec
    文件重命名为
    GameEngine.csproj
    。然后,将此文件移动到.csproj所在的文件夹中(不是debug/release文件夹,只是包含所有手写代码文件的基本文件夹)。然后继续跑

    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/
    

    希望在这些答案中,您能找到答案:)

    如果这对其他人有帮助,那么获取“需要说明”错误的一个愚蠢原因是:自从我在AssemblyInfo中添加了说明后,我还没有重建我的项目

    我已经在我的项目目录中用
    $description$
    标记定义了一个nuspec文件。当我跑的时候

    nuget pack MyProject.csproj
    
    尽管我的AssemblyInfo包含
    [assembly:AssemblyDescription(“描述”)]
    ,但我看到了一个“需要说明”错误


    。。。因为尽管您打包了
    .csproj
    ,但实际上是由Nuget打包的最新版本。哦。

    对我来说,解锁nuget.exe就成功了。从NuGet 5.7开始


    是否在AssemblyInfo.cs文件中指定AssemblyCompany和AssemblyDescription值?如果是这样的话,您能用新项目重现这个问题吗?我创建了一个新的类库项目。我根本没有修改AssemblyInfo.cs文件。AssemblyCompany和AssemblyDescription都是空字符串。同样的问题。然后我指定了AssemblyCompany和AssemblyDescription,它们现在填充在nuspec文件中,没有警告,但它们填充的是AssemblyInfo.cs中的值,而不是我在命令行中指定的值。此外,summary和releaseNotes未添加到nuspec文件中。这是expect行为。如果要在-properties中指定值,需要首先生成.nuspec文件(nugget spec),然后创建包。您可以为nuspec文件中的releaseNotes(替换默认的releaseNotes部分)$releaseNotes$添加一个新的令牌。但是如果您不想使用nuspec文件呢?我更喜欢从csproj打包,我使用的一些版本的nuget会从AssemblyInfo中获取描述,但其他版本则不会。我更喜欢从csproj打包,因为这样我就不必更新nuspec,当您更改依赖项版本时,nuspec会变得非常乏味。从csproj打包只是自动更新依赖项版本。要创建
    .nuspec
    文件,答案中的第一个命令应该是
    nuget spec
    ,而不是
    nuget pack
    。此外,为了解决缺少的作者消息,可以使用以下程序集属性:
    [程序集:组装公司(“作者”)]
    。在运行之前设置AssemblyDescription并重新生成项目