命令行生成的MSBuild与devenv
本文关键字:devenv MSBuild 命令行 | 更新日期: 2023-09-27 18:26:59
我想知道:从命令行编译解决方案时,使用msbuild和devenv有什么区别?
注意到的一件明显的事情是,msbuild确实构建了解决方案中不包含的依赖项目,而devenv则没有。
还有其他的吗?有没有一些特殊的标志可以传递给msbuild,使其与devenv版本完全匹配?
附言:我使用的是Visual Studio 2010 SP1
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
,这样我们就不会忽略错误。