0

我正在使用带有 TFS2012 的 Visual Studio 2012 构建定义,并且一个定义被设置为构建一个包含 .csproj 和 .vcproj(分别为 c# 和 c++)的解决方案。我可以在构建服务器上运行解决方案的本地构建,它运行良好,构建输出显示所有项目(最重要的是 c++ 项目)都已构建;prebuild,postbuild,整个九码。但是,当我运行构建相同解决方案的构建定义时,c++ 项目似乎没有构建。构建报告返回没有错误,但是构建日志仅返回 c++ 项目的以下内容:

C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE....\vc\vcpackages\VCBuild.exe /override:"[path to solution file].Mixed Platforms.Debug.vsprops" [path to项目文件]“调试|Win32”

我希望看到的是一个更长的构建报告(表明该项目实际构建),但可惜我似乎缺乏构建 c++ 项目的尝试。更不用说构建输出不包含来自 c++ 项目的任何程序集或 .pdb。

为了消除任何关于没有安装 Visual Studio 2008 问题的想法,构建服务器确实安装了 Visual Studio 2008,并且我已经执行了全面修复以确保所有正确的文件都到位(例如 vcbuild. exe 和 vcprojectengine.dll)。

任何想法为什么 c++ 项目没有建立?谢谢你的帮助!

更新_ _ __ _ __ _ __ _ __ _ ____

问题已经改变。由于一些非常苗条的构建日志记录,我的印象是 C++ 项目没有构建(我带着这个想法运行,因为我没有在指定的构建定义放置位置看到任何项目输出)。经过一些调查(以及一些非常有用的建议!),问题已集中在简单的 c++ 项目输出目录属性不会像 C# 属性那样动态更改。手动更改这些值并运行构建定义已证明构建定义使用 C++ 项目文件的默认输出目录属性。

我的临时解决方案是编写一些脚本来将这些输出复制到我需要的文件夹中。为了进一步提出我的帖子的问题,是否有任何设置可以让这些 C++ 项目输出目录属性像 C# 项目一样动态更改?

4

3 回答 3

0

感谢您的回复!不幸的是,我已经多次向配置管理器致辞。由于该解决方案是 c# 和 c++ 项目的混合,因此我当前运行的配置/平台是 DEBUG/MIXED PLATFORMS。所有项目都被选中进行构建,甚至更多我运行了一个 DEBUG/WIN32 构建定义(仅针对 c++ 项目),我从日志中收到的关于每个 c++ 项目的唯一输出是:

C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE....\vc\vcpackages\VCBuild.exe /override:C:[path to solution].Win32.Debug.vsprops C:[path to项目文件]“调试|Win32”

这是日志文件中关于我的 c++ 项目的唯一输出。任何想法构建过程试图做什么?

于 2013-07-25T16:17:21.770 回答
0

我认为您的问题是我刚刚遇到的问题。默认情况下,TFS2012 使用不同于您在项目中定义的构建输出结构。

因此,如果您期望某个输出目录为“Debug”或“....\Debug”等,它将失败。

解决方案是在文本编辑器中打开构建过程模板 xaml 文件。搜索“OutDir”并删除这些条目。(我只有一个)

以下是我学到这一点的链接:

http://blogs.msdn.com/b/jimlamba/archive/2010/04/13/customizableoutdir-in-tfs-2010.aspx

http://social.msdn.microsoft.com/Forums/vstudio/en-US/7126f1a3-9437-416a-88ed-2f63f84b2937/tfs-buildmsbuild-2010-bin-folder-auto-redirection-to-binaries-folder-不重定向所有项目?forum=tfsbuild

于 2014-02-21T16:36:02.923 回答
0

右键单击您的解决方案并打开配置管理器。

一旦你在那里,你可以指定你正在构建的配置,并指定需要构建的项目以及在哪个平台上。如果您打开调试配置,您将知道 C++ 项目的配置方式(哪个配置、平台以及是否需要构建)。您可以复制您在构建中使用的“配置”的相同设置定义。

打开您的构建定义 -> 编辑构建定义 -> 流程 -> 要构建的项目 -> 您可以在此处选择配置

打开您的构建定义 -> 转到流程 -> 高级 -> 将 MSBUILD 平台设置为“x86”。这应该解决它。

于 2013-07-25T14:10:41.133 回答