MSBuild vs devenv用于命令行构建

Fil*_*ącz 31 c# c++ msbuild visual-studio-2010 devenv

我想知道:从命令行编译解决方案时使用msbuild和devenv有什么区别?

一个显而易见的事情是,msbuild确实构建了解决方案中未包含的依赖项目,而devenv却没有.

还有别的吗?是否有一些特殊标志可以传递给msbuild以使其与devenv构建完全匹配?

PS我正在使用Visual Studio 2010 SP1

sha*_*p00 23

MSBuild的主要优点是您不需要安装Visual Studio.

MSBuild的一个限制是它不支持构建Visual Studio安装项目(.vdproj).

(你可以通过定义一个调用devenv的exec任务来解决这个问题,但是你仍然需要Visual Studio.)


Chr*_*n.K 9

根据这个MSDN博客条目,他们尝试最小化差异,但那些存在(即使用集成的C#编译器而不是csc.exe或设置BuildingInsideVisualStudio属性)主要是为了优化构建的性能.


Alb*_*aro 5

我在多层团队中经历过一个项目:开发人员、测试人员、部署人员。MSBuild 是部署者的主要工具:他们可以编译和重新编译,只需设置构建参数,编辑 MSBuild 的 xml 配置文件,无需打开 devenv。事实上,他们经常在没有 devenv 的预生产环境中使用 MSBuild。

Nant 是 Apache 基金会的一个类似工具。

有关更多信息,请查看此处:


Run*_*olt 5

另一个主要区别是它msbuild有一些不存在的选项devenv。据我所知,无法增加详细程度,devenv但您可以msbuild通过以下选项增加详细程度:

/v:diag
Run Code Online (Sandbox Code Playgroud)