TeamCity与MSBuild命令行

时间:2015-10-15 00:23:21

标签: msbuild teamcity

我有一个.csproj文件,当我在TeamCity中构建它时,与我通过msbuild.exe可执行文件构建它时的行为不同。如果我知道为什么,我可以尝试修复它,但我已经没有想法了。

命令行:(为便于阅读而格式化)

"C:\Program Files (x86)\MSBuild\12.0\bin\msbuild.exe" 
    Web\MyProject\MyProject.csproj 
    /p:Configuration=Dev;PublishProfile=Dev.pubxml;OutputPath="bin\\";DeployOnBuild=true 
    /t:Package

TeamCity构建步骤:(因为它显示在metarunner中,虽然我将其视为常规构建步骤时会得到相同的行为,但我已删除了{{1}参数)

dotNetCoverage

这些之间的区别是什么?

我看到的行为是MyProject.csproj所依赖的程序集(但它没有" Dev"构建配置)将使用msbuild构建得很好,但是将失败的TeamCity(版本9.1.1)。

具体来说,两种方法都将从任务 <runner name="Package Service" type="MSBuild"> <parameters> <param name="build-file-path" value="Web/MyProject/MyProject.csproj" /> <param name="msbuild_version" value="12.0" /> <param name="run-platform" value="x86" /> <param name="msbuild.prop.Configuration" value="Dev" /> <param name="msbuild.prop.DeployOnBuild" value="true" /> <param name="msbuild.prop.PublishProfile" value="Dev.pubxml" /> <param name="msbuild.prop.OutputPath" value="bin\\" /> <param name="msbuild.prop.Platform" value="AnyCPU" /> <param name="targets" value="Package" /> <param name="teamcity.step.mode" value="default" /> <param name="toolsVersion" value="12.0" /> </parameters> </runner> 开始,但TeamCity会继续ValidateGlobalPackageSetting,而msbuild会继续ResolveProjectReferences

从msbuild为这两种方法创建诊断日志后,我发现了我的问题,但我不确定如何修复它。

teamcity日志有CollectFilesFromIntermediateAssembly,但我的msbuild日志有_DeployOnBuild = False。这肯定会解释我所看到的行为的差异,但我不知道为什么TeamCity忽略了_DeployOnBuild = true属性。

1 个答案:

答案 0 :(得分:0)

asked this关于正常的Jetbrains跟踪系统并得到答案。

显然,TeamCity并不像我预期的那样支持任意msbuild.prop.*个参数。它支持的唯一两个是ConfigurationPlatform。其余的,我需要添加这一行:

<param name="runnerArgs" value="/p:DeployOnBuild=true;PublishProfile=%Configuration%.pubxml;OutputPath=&quot;bin\\&quot; />