0

如果我在 Visual Studio 中使用命令行选项“--xx”运行 c++ 项目/解决方案,如何从 TeamCity 执行完全相同的操作?

我已经搜索并找不到任何选项。

看起来像“命令行参数”的一件事实际上是为 MSBuild 指定的。

我必须运行解决方案 - 而不仅仅是解决方案生成的可执行文件。

谢谢你。

4

2 回答 2

1

您的 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

如果你需要的话,我敢肯定还有更多。

于 2012-10-17T08:32:23.637 回答
0

好吧,在TeamCity中(我使用的是 6.5.x 版本),当您添加新的构建步骤时,根据您的要求选择构建运行器作为Visual Studio (sln)Visual Studio 2003,然后您将获得通过的选项命令行参数。

您使用什么版本的 TeamCity?

于 2012-10-17T05:46:08.537 回答