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

当Visual Studio运行构build时,它将运行MSBuild来完成大部分工作。 如果将.sln文件传递给MSBuild,并具有适当的Configuration和Platform属性,它将按照Visual Studio的方式构build解决scheme。

msbuild mysolution.sln /p:Configuration=Release /p:Platform="Any CPU" 

但是,有一些差异:有时,通过MSBuild而不是通过Visual Studio,构build将会出错,反之亦然。

Visual Studio通过什么参数传入MSBuild来影响进程? 是否有一些方法来查看它正在执行构build时传递的参数?

Visual Studio不执行MSBuild.exe ,而是托pipe构build引擎本身(通过Microsoft.Build.*程序集) – 至less在默认的C#项目系统中就是这种情况。 其他语言,插件,软件包等可能会做不同的事情。

其实,在微博上有一个关于这个的系列文章,我正试图find他们并更新这个答案。

更新 :再次发现它。 在这里find “Visual Studio中的MSBuild”的post。

关于你原来的问题, 这个页面可能会帮助你进一步。 你也可以去“工具”,“选项”,“项目和解决scheme”,“build立和运行”,并增加MSBuild输出冗长。 用“诊断”你应该基本上看到开始构build时设置的每个属性。

首先,您可以使用/v:diag参数运行msbuild以获取诊断级别的日志logging。 这真的可以帮助搞清楚为什么构build失败。

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

特别:

  • 运行进程监视器
  • filter»filter…
  • Operation is Process Create »添加
  • Operation is Process Start »添加
  • 通过VS和命令行msbuild运行你的构build
  • 请参阅详细信息列中的命令行参数