命令行生成的MSBuild与devenv
MSBuild vs devenv for command line builds
我想知道:从命令行编译解决方案时,使用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
,这样我们就不会忽略错误。
- 如何使用msbuild和设置C++17命令行编译Visual Studio项目?
- MSBuild 由于缺少属性文件(可能与 IDE 相关)而无法生成 Visual Studio 项目
- 如何使用msbuild从OBJS生成导入LIB
- 在VS2013中使用devenv (C++)传递命令行参数argv
- 无法从命令行 VS2017 运行 msbuild for C++
- CMake:未能运行 MSBuild 命令:MSBuild.exe
- 从命令提示符使用 MSBuild 调试简单的C++可执行文件
- 是否有任何 MSBuild 命令行选项可以动态禁用 c++ 项目的代码分析?
- 如何使用MSBUILD V15构建C 项目
- MSBuild 依赖项未生成
- 如何通过命令行使用MSBUILD VS2015构建所有配置
- MSBuild 用于在生成时将 nuget 包应用于项目
- 如何使用 Gradle MSBuild 插件运行 SonarQube Scanner
- Visual Studio Code build with MsBuild
- 如何使用x64编译器使用MsBuild.exe编译大型c++项目
- 如何使用msbuild在命令行上重写项目属性
- 如何通过 msbuild 关闭编辑并继续(适用于 Veracode)
- MSBuild 未在控制台窗口应用程序中使用 "system" 进行编译
- 是否有SonarQube.Scanner.MSBuild.exe的详细模式
- 命令行生成的MSBuild与devenv