我使用Xorax IncrediBuild来构建 Visual Studio 2013 (或更高版本)的解决方案和项目,它们大多数.vcxproj
包含一堆.csproj
个。{ / p>
我花了一点时间挖掘,但我已经了解到:
当IncrediBuild与常规Visual Studio一起使用时,it uses the Devenv.exe by default。
从5.0版开始,BuildConsole.exe
支持新的转换:/UseMSBuild
到specifically instruct IncrediBuild to use MSBuild's build engine instead of the default Visual Studio's DevEnv。
因此,对于Visual Studio项目,有两种可用模式:
BuildConsole.exe MyProj.vcxproj
使用DevEnv.exe
BuildConsole.exe MyProj.vcxproj /usemsbuild
使用MSBuild.exe
我想了解使用两个引擎之间是否存在任何差异。
我做了一些测试并观察到:
IncrediBuild"正在初始化..."在DevEnv.exe
。
BuildConsole.exe
显然会生成不同的输出。
构建性能没有(或无意义)差异。
如果构建单独的C / C ++本机项目(.vcxproj
)以及整个解决方案(.sln
),使用{{1>的优点和缺点与DevEnv.exe
对比?
答案 0 :(得分:6)
**免责声明:我在IncrediBuild工作**
我们与Microsoft一起确定,为了获得与在Visual Studio中构建(不使用IncrediBuild)的构建方式相同的构建,应该使用DevEnv。 MSBuild在生成的构建输出中以及在执行自定义步骤和其他一些小事情时的行为方式,以与VS略有不同的方式执行构建。如果用户希望IncrediBuild构建的行为方式与从Visual Studio构建时的行为方式相同,则应使用默认方式(IncrediBuild执行DevEnv)。如果用户使用MSBuild执行其构建,无论是从命令行还是通过TFS,都应使用UseMSBuild开关。我们希望允许用户选择他们希望IncrediBuild工作的方式,具体取决于他们使用它们的方式,就像Microsoft支持DevEnv和MSBuild一样。
补充意见:
答案 1 :(得分:1)
微软是pretty explicit关于它:
对于与构建相关的任务,现在建议您使用MSBuild而不是devenv。有关更多信息,请参阅MSBuild命令行参考。
自VS2010以来Devenv文档中的一个注释,VS的第一个版本开始支持使用MSBuild构建C ++项目,并且还将默认项目文件扩展名从.vcproj更改为vcxproj。
这种建议的智慧只有在他们不明确的时候才能推断出来。你准备好了,Devenv.exe是一个非常繁重的进程,有很多DLL依赖,需要一段时间才能开始。另一个你可能会因为你现在的方式而烦恼,最初的指导是使用Devenv.com而不是Devenv.exe。这些依赖项也是麻烦制造者,当Devenv.exe在一个不寻常的运行时环境(如服务)中运行时,这种情况往往会妨碍或者只是简单地摔倒。来自地狱的样本故事是this Q+A,三个答案,没有一个看起来正确。还有其他人。
简单的建议是使用推荐的方式。