gpt4 book ai didi

msbuild - 如何在TeamCity中将MSBuild设置为Project.dll而不是Project.vcxproj.dll?

转载 作者:行者123 更新时间:2023-12-02 04:02:14 31 4
gpt4 key购买 nike

使用TeamCity自动化构建引擎时出现问题。
我需要使用以前构建的LIB来构建许多vcxprojects,其中一些是LIB或DLL,其余是EXE文件。

在TeamCity中设置一个LIB项目的示例是:

    <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文件中的链接器设置为:
。\ Release \ $(ProjectName).dll
对于LIB,根本没有这样的设置。

当我使用VS2010命令行构建它时,输出为 。\ Release \ mp3.dll 。\ Release \ mp3.lib

但是当我使用TC时,我将获得输出 。\ Release \ mp3.vcxproj.dll 。\ Release \ mp3.vcxproj.lib

为什么?如何避免这种奇怪的行为?
(我不想替换vcxproj文件中的行,例如。\ Release \ mp3.dll,这是许多项目的问题,我想避免这种原始解决方案,并且在LIB项目的情况下根本没有这种可能性)

感谢任何回应。

最佳答案

在二进制文件的文件名中出现.vcxproj时,我遇到了同样的问题。我将其范围缩小为$(ProjectName)变量,该变量在使用TeamCity构建时与在自己的计算机上构建时不同。

对我来说,解决方案是在每个受影响的项目文件中定义ProjectName变量(奇怪的是,在某些类型的项目中,例如静态库中似乎没有发生)。

<!-- Define project name to avoid TeamCity from generating incorrect one -->
<PropertyGroup>
<ProjectName>NAME_OF_PROJECT</ProjectName>
</PropertyGroup>

我将其放在 行的下方,以及引用它的 定义的上方。

我仍然不明白为什么TeamCity与众不同...我希望这可以帮助其他遇到相同问题的人。

关于msbuild - 如何在TeamCity中将MSBuild设置为Project.dll而不是Project.vcxproj.dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9887794/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com