Teamcity变量替换在nuspec文件中

13

这是我的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$,虽然版本在包的版本标签中被正确替换了,但依赖项中的版本没有被替换。

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

4个回答

13

使用Teamcity构建功能中的AssemblyInfo patcher已解决此问题。

解决方法如下:

配置步骤 -> 构建步骤 -> 添加构建特性(按钮)

添加AssemblyInfo Patcher并将版本设置为1.0.%teamcity.build.id%,然后问题就得到了解决。

将所需的库版本设置为$version$也可以解决问题。

希望这能有所帮助。


11

您无需通过TeamCity变量进行替换。使用-version开关,类似于:

-version switch, something like:

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

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


3
依赖库需要是相同的版本。使用汇编补丁程序解决。 - Kannaiyan

3

我通过在我的依赖项中简单地放置 [$version$] 来解决了这个问题。


AssemblyInfo Patcher 也会为您的 dll 版本化。否则,dll 的版本将与 nuget 包的版本不一致。 - Kannaiyan
1
这对我有用。关键是确保在nuget pack命令上使用-Version开关。 - craftworkgames

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

enter image description here


如果您希望在所有项目中使用相同的版本,那么配置可能会很繁琐。这意味着您需要为每个nuspec进行配置,而不是一个集中的位置。 - Kannaiyan

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