Visual Studio传递给MSBuild的参数是什么?

Pau*_*ner 57 msbuild visual-studio

当Visual Studio运行构建时,它运行MSBuild来完成大部分工作.如果将.sln文件传递给MSBuild,并使用适当的Configuration和Platform属性,它将构建与Visual Studio类似的解决方案.

msbuild mysolution.sln /p:Configuration=Release /p:Platform="Any CPU"
Run Code Online (Sandbox Code Playgroud)

然而,区别:有时构建将通过MSBuild的错误,而不是通过Visual Studio,反之亦然.

Visual Studio传入MSBuild以影响进程的参数是什么?有没有办法在执行构建时看到它传递的参数?

Chr*_*n.K 39

Visual Studio不执行MSBuild.exe,但托管构建引擎本身(通过Microsoft.Build.*程序集) - 至少是默认C#项目系统的情况.其他语言,插件,包等可能会有不同的做法.

实际上,微博上有关于此的帖子系列,我正试图找到它们并更新这个答案.

更新:再次找到它.在这里查找"Visual Studio中的MSBuild"帖子.

关于您的原始问题,页面可能会对您有所帮助.您还可以转到"工具","选项","项目和解决方案","构建并运行"并增加MSBuild输出详细程度.使用"Diagnostic",您应该基本上看到在开始构建时设置的每个属性.


Chr*_*ich 8

首先,您可以使用/v:diag参数运行msbuild 以获取诊断级别的日志记录.这确实有助于弄清楚构建失败的原因.

否则,是的,如果使用进程监视器,则可以监视进程启动事件,您可以在其中查看发送到进程的特定命令行.

特别:

  • 运行Process Monitor
  • 过滤器»过滤器......
  • Operation is Process Create »添加
  • Operation is Process Start »添加
  • 通过VS和命令行msbuild运行构建
  • 请参阅"详细信息"列中的命令行参数

  • 如果 MSBuild 作为单独的进程执行,这将是可行的方法;不幸的是,至少在 Visual Studio 2010 中,它不会显示为单独的进程。 (3认同)