【问题标题】:Teamcity variable replacement in nuspec filenuspec 文件中的 Teamcity 变量替换
【发布时间】:2013-06-13 18:06:33
【问题描述】:

这是我的 nuspec 文件,用于获取从 teamcity 生成的包。版本实际上是由 teamcity 变量设置的。

<?xml version="1.0"?>
<package >
  <metadata>
    <id>Company.Name</id>
    <version>$version$</version>
    <title>Title</title>
    <authors>My Name</authors>
    <owners>We are the owners</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Support</description>
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
    <copyright>Copyright 2013</copyright>
    <tags>Core</tags>
    <dependencies>
        <dependency id="Core.Assembly" version="[1.0.$teamcity.build.id$]" />   
    </dependencies>
  </metadata>
</package>

如何将版本替换为当前的 teamcity 构建 ID 号?尝试了$teamcity.build.id$%teamcity.build.id%

这不起作用。我也试过$version$。版本在包的版本标记中被正确替换,但不是在依赖项中。

我想使用与当前构建中相同版本的软件包,因此它们具有相同的构建号。

【问题讨论】:

    标签: nuget-package teamcity-7.0


    【解决方案1】:

    使用 Teamcity Build Features 中的 AssemblyInfo 修补程序解决。

    修复,

    配置步骤 -> 构建步骤 -> 添加构建功能(按钮)

    添加 AssemblyInfo Patcher 并将版本提供给 1.0.%teamcity.build.id% 即可解决问题。

    让具有 $version$ 的版本的依赖库解决了它。

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      您不需要通过 TeamCity 变量替换它。使用 -version 开关,例如:

      nuget.exe pack <nuspec> -version %teamcity.build.id%
      

      这样,nuspec 版本将在运行时被覆盖。

      【讨论】:

      • 依赖库必须是相同的版本。已使用 Assembly Patcher 解决。
      【解决方案3】:

      我通过简单地将 [$version$] 放入我的依赖项中解决了它。

      【讨论】:

      • AssemblyInfo Patcher 也会对您的 dll 进行版本控制。否则 dll 将在一个版本上,而 nuget 包将在另一个版本上。
      • 这对我有用。关键是确保在nuget pack 命令上使用-Version 开关。
      【解决方案4】:

      在 TeamCity 9.1 中,您可以在“Nuget Pack”构建步骤中覆盖版本号。

      【讨论】:

      • 如果您想在所有项目中使用相同的版本,这可能会很麻烦。意味着您需要为每个 nuspec 而不是一个集中位置进行配置。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-21
      • 1970-01-01
      相关资源
      最近更新 更多