命令行生成的MSBuild与devenv

本文关键字:devenv MSBuild 命令行 | 更新日期: 2023-09-27 18:26:59

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

注意到的一件明显的事情是,msbuild确实构建了解决方案中不包含的依赖项目,而devenv则没有。

还有其他的吗?有没有一些特殊的标志可以传递给msbuild,使其与devenv版本完全匹配?

附言:我使用的是Visual Studio 2010 SP1

命令行生成的MSBuild与devenv

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

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

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

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

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

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

欲了解更多信息,请点击此处:

  • MSBuild
  • 南特

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

/v:diag

我遇到这样一种情况,devenv在缺少项目文件时编写了一条错误消息,但仍然返回0。相比之下,msbuild返回了一个非零值。我将makefile切换为使用msbuild,这样我们就不会忽略错误。