2012-12-05 41 views
8

我已經能夠使用NuGetter創建構建定義來自動執行NuGet包創建過程並將包上傳到NuGet存儲庫。在構建過程中自動更新nuspec文件

但是,我想進一步自動化該過程。下面是列出的步驟,我想自動化爲構建過程的一部分:

  • 的構建過程應該能夠建立nuspec文件,而不是我手動創建該文件並將其保存在源控制存儲庫以供構建過程選擇它。
  • 構建過程應該能夠替換nuspec字段。

的nuspec領域,我真的希望能夠自動化是:

作者 我想構建過程與誰是人的名字來替換nuspec文件這一領域檢入代碼。

releaseNotes 我希望構建過程用簽入註釋替換nuspec文件中的此字段。

有沒有人能夠做到這一點?如果是這樣,你是如何去實現自動化的?

回答

0

這個帖子這裏How to avoid xml document generation when using nuget pack有一些想法

<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/licenseUrl" Value="http://someurl" />   
<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/projectUrl" Value="http://someurl" />   
<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/iconUrl" Value="http://somenice.png" />    
<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/tags" Value="My.Assembly" />   
<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/releaseNotes" Value="Review readme.txt for details." /> 
+0

這篇文章沒有回答我的問題。在構建過程中,我可以使用PowerShell腳本創建具有正確內容文件的NuGet包,這非常適用。我不是試圖從NuGet包中包含/排除文件。我的問題是,我想在構建過程中生成nuspec文件。所以,我想首先檢查nupsec文件,然後更新nuspec文件字段中的Author和releaseNotes,第三次簽入nuspec文件。這三個步驟應該在NuGetter檢索nuspec文件之前進行。 –

4

這可能會有幫助。

我創建了一個自動化過程來發布開源項目的更新。

https://github.com/DefinitelyTyped/NugetAutomation

您感興趣的有些東西是可能。

  • 我們如何使用powershell複製'模板'nuspec並注入我們需要的字段。 (您可以使用它來類似地替換'authors,releaseNotes'字段)
  • Ping公共nuget服務器以獲取當前版本並增加版本。

它需要一些Powershell的知識,但我希望它給你一個開始。

+0

感謝您分享您的腳本 –

0

您可以添加一個新的構建後事件,該事件觸發一個腳本,該腳本將「packages.config」文件中的版本取回並將它們寫回到nuspec文件中。

C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe -ExecutionPolicy Unrestricted -Command .'$(ProjectDir)..\PathToScirptLocation\NuspecAutoUpdate.ps1' -NuspecPath '$(ProjectDir)API.nuspec' -PackagesConfigPath '$(ProjectDir)packages.config' 

我將腳本和帖子構建事件上傳給我的GIT,供任何需要它的人使用。

https://github.com/avrum/NuspecAutoUpdate