TeamCity说在MSBuild步骤中使用“Build Parameters”而不是“/ property:”。那是什么意思?

时间:2011-06-02 18:11:19

标签: msbuild teamcity

我有一个TeamCity服务器设置来执行我的CI构建。我正在构建和测试C#解决方案并运行一些自定义的MSBuild任务。其中一项任务是在构建输出中打印警告......

  

MSBuild命令行参数包含“/ property:”或“/ p:”参数。请改用Build Parameteres。

我不明白这意味着什么或如何删除它。谷歌不好(有或没有拼写错误)。我从命令行运行任务(使用/verbosity:diagnostic)并且它没有出现,所以我相信这是一个TeamCity消息。

MSBuild任务是

<Target Name="InstallDb">
  <MakeDir Directories="$(DbPath)" />
  <Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseDrop.sql" />
  <Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseCreate.sql -v DbPath=&quot;$(DbPath)&quot;" />
  <Exec Command="sqlcmd -S .\sqlexpress -i db\OmnyxDatabaseProgrammability.sql" />
</Target>

相关的TeamCity步骤信息是

  

MSBuild版本:4.0
  MSBuild ToolsVersion:4.0
  运行平台:x64
  目标:InstallDb
  命令行参数:/property:DbPath=%env.DB_PATH%

2 个答案:

答案 0 :(得分:57)

您必须在配置

中的Properties and environment变量下添加Build Parameters

`enter image description here

因此,在Build Step for MSBUild的命令行参数中,删除指定为/p:的所有属性,并将其中的每一个添加到Build Parameters(上面的屏幕截图)并给出值

答案 1 :(得分:36)

这一切都发生在幕后!你只需遵循正确的惯例。在MSBuild脚本中,使用常规变量表示法

$(DbPath)

在TeamCity中,您可以定义系统或env变量

system.DbPath

TeamCity会自动将所有系统/ env变量发送到您的MSBuild任务,删除“系统”或“env”部分。而且您不必在TeamCity任务中编写/property:DbPath=system.DbPath