我正在使用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:“[解决方案文件的路径] .Mixed Platforms.Debug.vsprops” [项目文件的路径]“Debug | Win32”
我希望看到的是一个更长的构建报告(表明该项目实际构建了),但是我仍然没有尝试构建c ++项目。更不用说构建输出不包含c ++项目中的任何程序集或.pdb。
为了解决没有安装Visual Studio 2008的问题,构建服务器确实安装了Visual Studio 2008,并且我已经执行了全面修复以确保所有正确的文件都已到位(事情像vcbuild.exe和vcprojectengine.dll)。
为什么c ++项目没有构建的想法?谢谢你的帮助!
UPDATE_的 _ __ _ __ _ __ _ __ _ ____
问题已经改变。由于一些非常苗条的构建日志,我的印象是c ++项目没有构建(我运行这个想法,因为我没有在指定的构建定义放置位置看到任何项目输出)。经过一些调查(以及一些非常有用的建议!)之后,问题一直集中在c ++项目输出目录属性不会像C#属性那样动态变化。手动更改这些值并运行构建定义已证明构建定义使用C ++项目文件的缺省输出目录属性。
我的临时解决方案是做一些脚本将这些输出复制到我需要的文件夹。为了进一步解决我的帖子的问题,是否有任何设置可以让这些C ++项目输出目录属性像C#项目一样动态变化?
答案 0 :(得分:0)
右键单击您的解决方案并打开配置管理器。
在那里,您可以指定要构建的配置,并指定需要构建的项目以及在哪个平台中。如果您打开DEBUG配置,您将知道如何配置C ++项目(哪种配置,平台以及是否需要构建)。您可以复制在构建中使用的“配置”的相同设置定义
打开您的构建定义 - >编辑构建定义 - >过程 - >要构建的项目 - >你可以在这里选择配置
打开您的构建定义 - >转到过程 - >高级 - >将MSBUILD平台设置为“x86”。这应该解决它。
答案 1 :(得分: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:[解决方案的路径] .Win32.Debug.vsprops C: [项目文件的路径]“Debug | Win32”
这是关于我的c ++项目的日志文件中唯一的输出。任何想法构建过程尝试做什么?
答案 2 :(得分:0)
我认为你的问题是我刚遇到的问题。默认情况下,TFS2012使用与您在项目中定义的不同的构建输出结构。
因此,如果您希望某些输出目录为“Debug”或“.... \ Debug”等,则会失败。
解决方案是在文本编辑器中打开构建过程模板xaml文件。搜索“OutDir”并删除这些条目。 (我只有一个)
以下是我了解到的链接:
http://blogs.msdn.com/b/jimlamb/archive/2010/04/13/customizableoutdir-in-tfs-2010.aspx