2016-11-08 103 views
1

我的包構建成功並上傳到VSTS中的包飼料,但我似乎無法弄清楚如何編輯包的描述和作者,以便我的設置值顯示在包飼料。VSTS自動化構建NuGet包裝器/發行商

從我讀我把我的的NuGet打包內容下的額外生成屬性,當我查看日誌文件,我看到這一點:

...NuGet.exe pack "...csproj" -OutputDirectory "..." -Properties Configuration=release;Description="My Description";Authors="Me";Owners="My Company" 

從文檔,我相信我這樣做是正確的(但顯然我沒有)。對於「其他構建屬性」與NuGet參數之間的關係,似乎有點混淆。

我的目標再次是獲得描述和作者,我設置爲可從Visual Studio中的NuGet包管理器查看。

回答

1

如果它是建立包,那麼有NuGet Packager構建步驟沒有問題。兩件事情需要改變。

  1. 爲了指定的屬性,如你正在做必須有相同的目錄中使用相同的名稱,當然還有* .nuspec文件需要到要檢查的解決方案文件標記化* .nuspec文件VSTS/TFS。
  2. 描述的標記名稱不能是描述。

有關*的更多詳細信息。nuspec文件請參閱這裏的解決方案:

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

2

您可以根據.nuspec文件創建一個包。 步驟:

  1. 爲您的項目生成.nuspec文件(命令:nugget spec)。

例如:(包括作者和說明令牌)

<?xml version="1.0"?> 
<package > 
    <metadata> 
    <id>CommLib1</id> 
    <version>1.0.0.6</version> 
    <title>CommLib1</title> 
    <authors>$author$</authors> 
    <owners>$author$</owners> 
    <licenseUrl>http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE</licenseUrl> 
    <projectUrl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projectUrl> 
    <iconUrl>http://ICON_URL_HERE_OR_DELETE_THIS_LINE</iconUrl> 
    <requireLicenseAcceptance>false</requireLicenseAcceptance> 
    <description>$description$</description> 
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes> 
    <copyright>Copyright 2016</copyright> 
    <tags>Tag1 Tag2</tags> 
    </metadata> 
</package> 
  • 包含該文件到源控制
  • 指定的NuGet參數(標記步驟1)中的NuGet打包構建步驟的 enter image description here
  • UPDATE1:

    一般而言,您只需更新您項目的AssemblyInfo.cs文件(Author => AssemblyCompany;描述=> AssemblyDescription;版本=> AssemblyVersion),它會根據這個數據創建包,除非它不能從你的程序集中檢索元數據(我有一個項目有這個問題)。

    因此,步驟:

    1. 確保的NuGet可直接在您的本地/編譯機創建通過nuget.exe命令包檢索所需的元數據(的NuGet包[XX]的.csproj)

    2. 創建構建定義(1 Visual Studio中建立2的NuGet打包的默認值3的NuGet出版社)

    +0

    我想過這樣做,但我不希望有手動更新* .NuSpec文件的版本。我看到你有一個變量「$(v)」,但是有沒有辦法從AssemblyVersion屬性中獲取該變量的值?我的解決方案是一個單獨的類庫,我試圖製作一個模板,以便輕鬆地發佈我們常見的內部類庫。 – LorneCash

    +0

    @LorneCash是的,你可以在參數中指定版本。 (我在構建定義中使用了一個變量值) –

    +0

    @LorneCash如果可以從程序集中檢索元數據,然後通過VSTS構建進行構建,打包和發佈,則可以直接更新AssemblyInfo.cs文件。我更新了我的答案。 –