如何使用TeamCity将此公共属性传递给MSBuild?

Ann*_*ile 14 msbuild teamcity teamcity-7.0

我正在使用TeamCity Visual Studio运行程序.我想添加一个无法从Visual Studio访问的设置.

/Property:FileAlignment=4096
Run Code Online (Sandbox Code Playgroud)

我直接在构建步骤"命令行参数"中键入了它.构建日志显示错误:

MSBuild命令行参数包含"/ property:"或"/ p:"参数.请改用Build Parameters.

我不明白如何从TeamCity向MSBuild提供此功能并摆脱此警告!

1.我应该使用哪种参数?

有3种:

  • 配置参数
  • 系统属性
  • 环境变量.

我不想要一个环境或系统变量,因为我不希望这个构建依赖于任何外部的东西.我现在要尝试Config,但后来我不确定我是否正确填写它.

2.我怎么能告诉这个参数实际上被使用了?

构建日志似乎只与其程序具有可导航/可折叠的xml级别,并没有说出构建参数.

Ale*_*lex 14

您应该使用"系统属性".不要担心名称,这就是TeamCity所称的名称.他们是常规财产.您可以在"编辑配置设置> 7.构建参数"中添加它们.

例如,您可以按如下方式添加系统属性:

名称:system.FileAlignment

类型:系统属性(系统.)

价值:4096

请注意,TeamCity将坚持使用"系统".字首.这没关系,因为MSBuild脚本仍然会将其视为$(FileAlignment).


Ann*_*ile 1

这事就解决了。为了澄清这一点,Anthony 讲述了如何使用 MSBuild 在命令行中解决问题。也可以使用 devenv 在命令行上解决,根据 Microsoft 的票据,语法为:

 devenv ..\..\mysolution.sln /Rebuild /Property:Config=Release;Platform=AnyCPU;Filealignment=512
Run Code Online (Sandbox Code Playgroud)

然而,我想要的是让 Teamcity 的“Visual Studio Build”接受该参数。这是通过如下方式实现的。在命令行参数框中,我输入:

/Property:FileAlignment=filealignment v:diag
Run Code Online (Sandbox Code Playgroud)

然后“构建参数”的输出选项卡显示:

User Defined Parameters
Name                    Value passed to build
system.filealignment    512
system.verbosity        diagnostic
Run Code Online (Sandbox Code Playgroud)