【问题标题】:Auto update the nuspec file during the build process在构建过程中自动更新 nuspec 文件
【发布时间】:2012-11-22 18:40:07
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    这可能会有所帮助。

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

    https://github.com/DefinitelyTyped/NugetAutomation

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

    • 我们如何使用 powershell 复制“模板”nuspec 并注入我们需要的字段。 (您可以使用它来类似地替换“作者、发行说明”字段)
    • Ping 公用 nuget 服务器获取当前版本并提高版本。

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

    【讨论】:

    • 感谢分享您的脚本
    【解决方案2】:

    这个帖子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." />  
    

    【讨论】:

    • 这篇文章没有回答我的问题。我能够在构建过程中使用 PowerShell 脚本创建具有正确内容文件的 NuGet 包,效果很好。我不想在 NuGet 包中包含/排除文件。我的问题是,我想在构建过程中生成 nuspec 文件。所以,我想首先签出 nupsec 文件,第二次更新 Author 和 releaseNotes 的 nuspec 文件字段,第三次签入 nuspec 文件。这三个步骤应该在 NuGetter 检索 nuspec 文件之前发生。
    【解决方案3】:

    您可以添加一个新的构建后事件,该事件触发一个脚本,该脚本从“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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-14
      • 2011-12-01
      • 2018-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-04
      相关资源
      最近更新 更多