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

9
我已经能够使用NuGetter创建构建定义来自动化NuGet包的创建过程,并将包上传到NuGet存储库。但是,我想进一步自动化这个过程。以下是我希望作为构建过程一部分自动化的步骤列表:
- 构建过程应该能够构建nuspec文件,而不是我手动创建此文件并将其保存在源代码控制存储库中供构建过程选择。 - 构建过程应该能够替换nuspec字段。
我真正想要自动化的nuspec字段是:
- 作者 我希望构建过程能够用代码提交者的姓名替换nuspec文件中的此字段。 - 发布说明 我希望构建过程能够用提交评论替换nuspec文件中的此字段。
有人能够实现这个吗?如果可以,您是如何自动化的?
3个回答

4

这可能会有所帮助。

我创建了一个自动化进程,用于发布开源项目的更新。

https://github.com/DefinitelyTyped/NugetAutomation

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

  • 如何使用PowerShell复制“模板”nuspec并注入所需字段。(您可以使用此方法替换“作者,发布说明”字段)
  • ping公共nuget服务器以获取当前版本并增加版本号。

这需要一些PowerShell知识,但我希望它能为您提供一个起点。


感谢分享你的脚本。 - freedomn-m

0

这篇文章如何在使用NuGet打包时避免生成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." />  

这篇文章并没有回答我的问题。我能够使用PowerShell脚本在构建过程中创建NuGet包,并正确地添加内容文件,这个过程非常完美。我不是试图从NuGet包中包含/排除文件。我的问题是,我想在构建过程中生成nuspec文件。因此,我想首先检出nupsec文件,然后更新nuspec文件的作者和发布说明字段,最后检入nuspec文件。这三个步骤应该在NuGetter检索nuspec文件之前发生。 - H A

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接