我在使用TeamCity自动化构建引擎时遇到了问题。 我需要建立许多vcxprojects,其中一些是LIB或DLL,其余部分是使用先前构建的LIB的EXE文件。在TeamCity的设置一个LIB项目的如何在TeamCity中设置MSBuild来命名Project.dll,而不是Project.vcxproj.dll?
例子是:
<runner id="RUNNER_15" name="MP3" type="MSBuild">
<parameters>
<param name="build-file-path" value="Audio\mp3\mp3.vcxproj" />
<param name="dotNetCoverage.NCover.HTMLReport.File.Sort" value="0" />
<param name="dotNetCoverage.NCover.HTMLReport.File.Type" value="1" />
<param name="dotNetCoverage.NCover.Reg" value="selected" />
<param name="dotNetCoverage.NCover.platformBitness" value="x86" />
<param name="dotNetCoverage.NCover.platformVersion" value="v2.0" />
<param name="dotNetCoverage.NCover3.Reg" value="selected" />
<param name="dotNetCoverage.NCover3.args" value="//ias .*" />
<param name="dotNetCoverage.NCover3.platformBitness" value="x86" />
<param name="dotNetCoverage.NCover3.platformVersion" value="v2.0" />
<param name="dotNetCoverage.NCover3.reporter.executable.args" value="//or FullCoverageReport:Html:{teamcity.report.path}" />
<param name="dotNetCoverage.PartCover.Reg" value="selected" />
<param name="dotNetCoverage.PartCover.includes" value="[*]*" />
<param name="dotNetCoverage.PartCover.platformBitness" value="x86" />
<param name="dotNetCoverage.PartCover.platformVersion" value="v2.0" />
<param name="msbuild_version" value="4.0" />
<param name="run-platform" value="x86" />
<param name="toolsVersion" value="4.0" />
</parameters>
</runner>
在DLL的情况下,在vcxproj文件链接设置说: \发布\ $(项目名).dll文件 在LIB的情况下,有根本不是这样的设置。
当我使用VS2010命令行它建立,输出为。\发布\ mp3.dll或。\发布\ mp3.lib。
但是当我使用TC,我会得到输出。\发布\ mp3.vcxproj.dll或。\发布\ mp3.vcxproj.lib
为什么?如何避免这种奇怪的行为? (我不想替换vcxproj文件中的行,例如。\ Release \ mp3.dll,这是很多项目的问题,我想避免这个原始解决方案,并且在LIB项目的情况下根本就没有这种可能性)
Thx任何响应。
具有相同的问题。 – vidstige 2012-12-07 13:12:35
发生这种情况是因为TeamCity构建器重命名项目文件并为其添加了“.teamcity”扩展名。 Visual Studio通过修剪一个扩展来从项目文件名中推断'$(ProjectName)'宏,因此''(ProjectName)'设置为'mp3.vcxproj'而不是'mp3'。正如艾伦所建议的那样,除了避免使用这个宏,我没有找到任何解决方法。 – 2015-02-10 20:40:32