我有一个.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
属性。
答案 0 :(得分:0)
我asked this关于正常的Jetbrains跟踪系统并得到答案。
显然,TeamCity并不像我预期的那样支持任意msbuild.prop.*
个参数。它支持的唯一两个是Configuration
和Platform
。其余的,我需要添加这一行:
<param name="runnerArgs" value="/p:DeployOnBuild=true;PublishProfile=%Configuration%.pubxml;OutputPath="bin\\" />