如果我在 Visual Studio 中使用命令行选项“--xx”运行 c++ 项目/解决方案,如何从 TeamCity 执行完全相同的操作?
我已经搜索并找不到任何选项。
看起来像“命令行参数”的一件事实际上是为 MSBuild 指定的。
我必须运行解决方案 - 而不仅仅是解决方案生成的可执行文件。
谢谢你。
如果我在 Visual Studio 中使用命令行选项“--xx”运行 c++ 项目/解决方案,如何从 TeamCity 执行完全相同的操作?
我已经搜索并找不到任何选项。
看起来像“命令行参数”的一件事实际上是为 MSBuild 指定的。
我必须运行解决方案 - 而不仅仅是解决方案生成的可执行文件。
谢谢你。
您的 Visual Studio 构建是使用服务器上的 MSBuild 执行的,名称可能有点令人困惑,但参数的功能应该与使用 MSBuild 参数框的方式相同,就像将它们传递给 Visual Studio 一样。
如果使用该参数框使其工作存在问题,我们将需要有关您需要运行的命令和您需要的行为的更多信息。
编辑以下提问者的评论
实际上这里的问题是,Visual Studio 构建实际上并不存在于 TeamCity 中,Visual Studio 构建实际上只是针对您的 Visual Studio 解决方案运行 MsBuild,就 Google 测试而言,它与您的问题有很大不同。
要解决此问题,您可能必须将构建运行程序更改为仅构建您的解决方案并运行 Google 测试的 MsBuild 脚本。值得庆幸的是,互联网提供了:
http://code.google.com/p/msbuildteamcitytasks/wiki/RunGoogleTests
以上是一些声称将 GoogleTest 结果与 TeamCity 完全集成的 MsBuild 任务,为您完成这方面的所有工作。这样做的结果是您只需要一个非常简短的构建脚本,在您的解决方案上调用 MsBuild,然后根据需要调用该 MsBuild Task。由于我没有使用它们,我无法确认它们的工作情况或设置的容易程度,但页面上的文档暗示它应该相当容易组合在一起。
下面是一个 MsBuild 的片段,它将构建您的解决方案
<MSBuild Projects="@(BuildProjects)" Targets="Rebuild" BuildInParallel="true" Properties="Configuration=Debug;Platform=$(Platform)">
<Output ItemName="DebugOutputs" TaskParameter="TargetOutputs"/>
</MSBuild>
其中每个 $() 变量是 TeamCity 配置中的系统属性 @(BuildProjects) 是使用此生成的解决方案列表:
<ItemGroup>
<BuildProjects Include="$(WorkingArea)\**\*.sln" />
</ItemGroup>
您当然可以对所有这些变量进行硬编码,或者根据需要更改参数,但是这个示例将给您一些在其他项目上重用脚本的自由(它不是一个完整的脚本,还有一些额外的结构内容可以解决外部)。
您当然可以根据需要为脚本构建更多功能,或者使其尽可能简单以使其易于理解。
可从以下位置获得有关 MsBuild 脚本的更多文档: http ://www.universalthread.com/ViewPageArticle.aspx?ID=61 http://codingcockerel.co.uk/2008/04/15/automating-the- build-with-msbuild/ http://www.codeproject.com/Articles/12985/Practical-NET2-and-C-2-An-introduction-to-MSBuild
如果你需要的话,我敢肯定还有更多。
好吧,在TeamCity中(我使用的是 6.5.x 版本),当您添加新的构建步骤时,根据您的要求选择构建运行器作为Visual Studio (sln)或Visual Studio 2003,然后您将获得通过的选项命令行参数。
您使用什么版本的 TeamCity?