Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TeamCity表示要使用;“构建参数”;而不是",/财产:“;在MSBuild步骤中。这是什么意思?_Msbuild_Teamcity - Fatal编程技术网

TeamCity表示要使用;“构建参数”;而不是",/财产:“;在MSBuild步骤中。这是什么意思?

TeamCity表示要使用;“构建参数”;而不是",/财产:“;在MSBuild步骤中。这是什么意思?,msbuild,teamcity,Msbuild,Teamcity,我有一个TeamCity服务器设置来进行CI构建。我正在构建和测试一个C#解决方案,并运行一些自定义MSBuild任务。其中一项任务是在生成输出中打印警告 MSBuild命令行参数包含“/property:”或“/p:”参数。请改用生成参数 我不明白这意味着什么,也不知道如何删除它。它不适合谷歌(有或没有打字错误)。我从命令行运行了该任务(使用/verbosity:diagnostic),但它没有出现,因此我相信这是一条TeamCity消息 MSBuild任务是 <Target Name=

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

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

我不明白这意味着什么,也不知道如何删除它。它不适合谷歌(有或没有打字错误)。我从命令行运行了该任务(使用
/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工具版本:4.0
运行平台:x64
目标:InstallDb
命令行参数:/property:DbPath=%env.DB\u PATH%

您必须在配置中的
属性和环境下添加变量

`


因此,在MSBUild的
构建步骤中的命令行参数中,删除指定为
/p:
的任何属性,并将这些属性添加到
构建参数中(上面的屏幕截图),并给出值,这一切都发生在幕后!你只需要遵循正确的惯例。在MSBuild脚本中,使用正则变量表示法

$(DbPath)
在TeamCity中,您可以定义一个系统或环境变量

system.DbPath

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

@Anthony Mastrean Yeah-
将构建参数传递给构建。生成参数可以有两种类型:系统属性和环境变量。任何生成运行程序都支持环境变量,但是系统属性仅适用于具有属性概念的生成运行程序。例如,命令行运行程序不支持属性谢谢!这是可行的,但我必须访问doc才能真正了解实现/用法。来自team city docs:配置参数提供了一种覆盖从模板继承的构建配置中的某些设置的方法。它们从未传递给生成。如果在同一生成配置中有两个MSBuild步骤使用相同的参数,但值不同,则可能会出现问题。如果必须在“构建配置”级别定义它们,那么看起来不可能将同一参数的不同值传递给构建步骤。这将非常好。除了一只虫子。如果希望将不同的参数传递到共享相同参数名的两个不同构建步骤,该怎么办?根据,只有系统变量被注入到脚本中。据我所知,在构建代理上设置为实际的环境变量。虽然它们可能不会像系统变量一样传递给构建脚本/步骤,但它们可以使用。MSBuild必须使用环境变量为
$(MyVar)
提供值,因为我有一个TeamCity环境变量,它为我用MSBuild调用的goofy cmd行工具提供值。@AnneTheAgile您只需添加一个TeamCity系统构建参数即可。这是您提到的三种构建参数之一。您可以将其命名为“系统”,并提供所需的值。TeamCity将自动将其发送到MSBuild。您可以在生成报告中检查参数的值。有一个用于列出所有参数的选项卡。