8

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

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

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

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

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

releaseNotes 我希望构建过程用签入注释替换 nuspec 文件中的此字段。

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

4

3 回答 3

4

这可能会有所帮助。

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

https://github.com/DefinitelyTyped/NugetAutomation

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

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

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

于 2013-03-07T16:25:01.393 回答
0

这篇文章在这里如何避免使用 nuget pack 时生成 xml 文档有一些想法

<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." />  
于 2012-12-05T08:38:38.200 回答
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

于 2017-05-17T09:05:18.760 回答