0

我正在使用TFS2012与Visual Studio 2012构建定义,并且将一个定义设置为构建包含.csproj和.vcproj(分别为c#和C++)的解决方案。我可以在构建服务器上运行解决方案的本地构建,效果很好,构建输出显示所有项目(最显着的是C++项目)都是构建的;预制,后建,整个九码。但是,当我运行构建完全相同的解决方案的构建定义时,C++项目似乎没有构建。生成报告没有错误返回,但生成日志只返回以下为c + +项目:与csproj一起构建vcproj TFS2012

C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ Common7 \ IDE .... \ vc \ vcpackages \ VCBuild.exe /覆盖: “[路径解决方案文件] .Mixed Platforms.Debug.vsprops”[路径到项目文件] “调试|的Win32”

我所希望看到的是一个多更长的构建报告(表明项目实际构建),但是,我留下了似乎缺乏构建C++项目的尝试。更不用说构建输出不包含C++项目中的任何程序集或.pdb。

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

任何想法,为什么c + +项目不建设?谢谢你的帮助!

UPDATE_ _ __ _ __ _ __ _ __ _ ____

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

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

+0

你的意思是C#项目动态更新输出目录?你的意思是基于配置的释放/调试?对于C++和c#都应该是相同的。 – Isaiah4110

+0

我通过使用许多构建注意到的一件事是项目属性的许多宏值被默认模板更改。这允许将输出目录更改为C:\ Builds \ 1 \ ProjectCollectionName \ DefinitionName之类的东西,换句话说,要在构建临时区域而不是默认输出目录中输出(至少这是我的理解)。因此,要解决这个问题,我将在构建模板中添加一个活动,将C++输出复制到放置位置。 – Freestyle076

回答

0

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

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

打开构建定义 - >编辑生成定义 - >流程 - >项目,以建立 - >您可以在这里选择配置

打开您的构建确定指标 - >去处理 - >高级 - >设置MSBUILD平台为“x86”。这应该解决它。

+0

新的想法并没有帮助:/。然而在此期间,我发现了一个有趣的位。我的问题可能与输出目录有关。我最大的挫折是,我没有看到我的构建定义的放置位置中的C++输出文件(之前认为这是因为该项目没有构建)。但是,如果我删除C++项目的立即bin文件夹中的输出二进制文件并运行解决方案的构建定义,二进制文件将被替换(我确信这不是由于构建后命令)。输出文件夹的值不能正确更新。更快 – Freestyle076

+0

这里有一些好消息(好吗?),似乎构建定义在构建C++项目方面做得很好。 C++项目文件被设置为将输出放置在项目文件的立即bin \ [debug/release]中。在运行c#项目的构建定义时,这些输出值将动态更改为构建服务器上的构建临时区域。看起来,这不会发生在C++项目中,因为输出不会被改变,并且输出的运行方式与我在本地项目中简单地运行msbuild完全一样。所以看来我有一个新的问题来更新这个职位... – Freestyle076

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 /覆盖:C:[解决方案的路径] .Win32.Debug.vsprops C:[path到项目文件]“Debug | Win32”

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

+0

您有权登录到构建服务器吗?在那里打开Visual Studio并尝试编译项目,看看会发生什么。 – Isaiah4110

+0

总是要提一提所有你试过的东西,否则回答问题的人不会知道:) – Isaiah4110

+0

我这样做,每次我直接构建包含我的C#和C++项目的解决方案文件时,都使用MSBuild构建服务器。我的问题只有在使用构建定义构建解决方案时才能找到。出于某种原因,仅使用构建定义和构建定义就会产生这些糟糕的结果,即我发布的日志消息。我试过的每一个版本都能正常工作。构建服务器上的msbuild,构建服务器上的vcbuild,右键单击解决方案文件并在构建服务器上单击Visual Studio 2008中的重建。所有工作都很好。 – Freestyle076

0

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

因此,如果您希望某些输出目录是“Debug”或“.... \ Debug”等,它将会失败。

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

这里是那里,我知道这个链接:

http://blogs.msdn.com/b/jimlamb/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-not-redirecting-all-projects?forum=tfsbuild

相关问题