使用Team City环境变量覆盖项目属性

jbe*_*t48 5 msbuild teamcity

我有一个名为Version的C#项目属性定义为

<Version Condition="$(Version)==''">1.2.3.4<Version>
Run Code Online (Sandbox Code Playgroud)

1.2.3.4是默认值.

我有一个Team City系统属性,也称为Version,设置为覆盖.因此,在Team City的自定义运行对话框中,我可以为Version指定一个值,并使用该值.这很好用.

但是,如果我将参数留在Team City中,则默认值仍会被空白覆盖(null?).如果我删除Team City参数,则使用默认值.

条件不正确吗?如何将Team City属性设置为空白,并且只有在输入某个值时才会覆盖?

man*_*lds 6

OP评论后更新的答案:

来自docs:

MSBuild允许您使用/ property或/ p命令行开关从命令行设置属性.从命令行接收的属性值覆盖项目文件中设置的属性值和从环境变量继承的属性值.

因此,您只需在TeamCity配置中设置属性$(VersionTC)并检查该属性是否为空并设置版本

<Version>$(VersionTC)<Version>
<Version Condition="'$(VersionTC)'==''">1.2.3.4<Version>
Run Code Online (Sandbox Code Playgroud)

(所以你设置VersionVersionTC第一个.然后看它是否为空并设置默认值)

看看这篇博文解释所有这些.


尝试以下内容:

<Version Condition=" '$(Version)'=='' ">1.2.3.4<Version>
Run Code Online (Sandbox Code Playgroud)

注意' ' (单引号)$(Version)