簡體   English   中英

Nuget.exe 包警告:未指定說明。 使用“描述”

[英]Nuget.exe pack WARNING: Description was not specified. Using 'Description'

我正在嘗試通過命令行創建 NuGet Package,但我似乎無法弄清楚如何設置描述、作者、標題、摘要、發布說明和所有者。 package 成功創建它只是給了我這個警告:

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,它來自從 Visual Studio Team Services 下載的“CredentialProviderBundle.zip”文件。

該命令實際上幾乎沒有任何問題。

如果沒有一些先決條件,就不可能完成問題的要求。

  1. 在與 *.csproj 相同的目錄中必須有一個具有相同名稱的 *.nuspec 文件。
  2. *.nuspec 文件必須包含您嘗試通過命令行設置的所有元素
  3. 將通過命令行填充的所有元素都必須包含“$tokenName$”形式的標記
  4. 在命令行中,您不能指定 *.nuspec 元素名稱,而是指定包含在美元符號之間的值(也稱為令牌名稱)
  5. 標記名稱可能與問題中列出的所有屬性的元素名稱相同,但描述元素除外。 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 不需要有令牌,因為無論哪種方式它們都會自動被覆蓋,但這不會造成傷害。

這是您應該與上面指定的 *.nuspec 文件一起使用的命令行:

NuGet.exe pack "<MyProjectPath>.csproj" -OutputDirectory "<MyOutputDirectory>" -Properties Configuration=release;Desc="MyDescription";Authors="MeMeMe...MeToo";Title="MyTitle";Summary="MySummary";ReleaseNotes="MyChanges;"Owners="MyCompany"

萬一這對其他人有幫助,這是導致“需要描述”錯誤的愚蠢原因:自從我向我的 AssemblyInfo 添加描述以來,我沒有重建我的項目。

我在我的項目目錄中定義了一個帶有<description>$description$</description>標記的 nuspec 文件。 當我跑

nuget pack MyProject.csproj

我看到了“需要描述”錯誤,即使我的 AssemblyInfo 包含[assembly: AssemblyDescription("A DESCRIPTION.")] ...

...因為盡管您打包了.csproj ,但實際上是 Nuget 打包的是您的最新版本。 哦。

我知道這已經很老了,但是今天我一直在為這個問題苦苦掙扎。 我在跑步

nuget pack SomeRandom.csproj -Properties Configuration=Release

我收到“需要描述”錯誤。

我最終刪除了 nuspec 文件並讓 nuget 通過運行來創建一個新文件

nuget spec SomeRandom.csproj

然后當我運行 nuget pack 時它運行良好。 奇怪,但可以幫助某人。

對我來說,解除阻止 nuget.exe 成功了。 從 NuGet 5.7 開始,這似乎是必要的

取消阻止 nuget.exe

對於類似但相關的問題:

通過 .NET Core 項目的 .csproj 文件設置這些屬性時,可以使用以下方法避免警告:

dotnet pack

代替

nuget pack

只是添加到這篇文章,因為這些都沒有完全幫助我,運行命令

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/

希望在這些答案之間,您可以弄清楚:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM