在构建过程中自动更新nuspec文件

时间:2012-12-05 01:07:02

标签: tfs nuget build-automation nuget-package nuspec

我已经能够使用NuGetter创建一个构建定义来自动化NuGet包创建过程并将包上传到NuGet存储库。

但是,我想进一步自动化这个过程。以下是我希望在构建过程中自动执行的步骤列表:

  • 构建过程应该能够构建nuspec文件,而不是我手动创建此文件并将其保存在源代码控制存储库中,以便构建过程来获取它。
  • 构建过程应该能够替换nuspec字段。

我真正希望能够自动化的nuspec字段是:

作者    我希望构建过程将nuspec文件中的此字段替换为签入代码的人员的姓名。

阅读发布    我希望构建过程使用签入注释替换nuspec文件中的此字段。

有没有人能够做到这一点?如果是这样,你是如何实现自动化的呢?

3 个答案:

答案 0 :(得分:4)

这可能有所帮助。

我创建了一个自动化流程来发布开源项目的更新。

https://github.com/DefinitelyTyped/NugetAutomation

你可能感兴趣的一些事情。

  • 我们如何使用powershell复制'模板'nuspec并注入我们需要的字段。 (您可以使用它来类似地替换'authors,releaseNotes'字段)
  • ping公共nuget服务器以获取当前版本并增加版本。

它需要一些Powershell知识,但我希望它能为你提供一个开始。

答案 1 :(得分: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." />  

答案 2 :(得分:0)

您可以添加一个新的帖子构建事件,该事件触发一个脚本,该脚本将从&#34; packages.config&#34;中获取该版本。将文件写回nuspec文件。

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

我将脚本和post build事件上传到我的GIT,供任何需要它的人使用。

https://github.com/avrum/NuspecAutoUpdate