使用msbuildbuild立一个解决scheme文件

我正准备使用msbuild构build一个Visual Studio解决scheme文件。我使用下面的命令行来构build解决scheme

msbuild.exe SolutionFile.sln /t:Build/p:Configuration=Release;Platform=Win32 

尽pipe构build在某个时候开始,但是构build看起来是悬而未决,并且无法向前移动,如下所示

 Done Building Project "D:\SolutionPath\ProjectFile10.vcxproj" (default targets). 

在SolutionFile.sln下有很多.proj,我必须build立。

我必须使用msbuild.exe而不是devenv.com

有一种诊断msbuild里发生了什么的技术,可以帮助你弄清楚发生了什么。 从命令提示符设置一个环境variables:

 set msbuildemitsolution=1 

一旦你运行了msbuild,那么这将生成一个.metaproj文件。 这个文件是msbuild在内部使用的,然后删除。 你可以阅读它来找出实际目标的名字。 Build目标已展开,以显示实际调用的内容。 然后,您可以尝试使用msbuild的/t标志来构build单个目标,以确定哪个目标导致了问题。

将详细属性设置为诊断并将输出保存到文件。 这将帮助您确定解决scheme中的哪个项目挂起,并帮助诊断您的问题。

命令行语法如下,将输出保存到名为MyProjectOutput.log的文件中:

 msbuild SolutionFile.sln /t:build /fl /flp:logfile=MyProjectOutput.log;verbosity=diagnostic 

它也出现在/ t目标之后需要一个空间来build立在你列出的命令中传递的参数。

 msbuild.exe SolutionFile.sln /t:Build /p:Configuration=Release;Platform=Win32 

另外,你确定每个项目都包含一个“Release”和“Win32”configuration吗? 你也可以尝试运行下面的命令,看看编译的东西。 Msbuild将自动运行所需的默认目标和configuration。

 msbuild SolutionFile.sln 

你可以尝试的另一个select是只编译项目,看看是什么产生的:

 msbuild "D:\SolutionPath\ProjectFile10.vcxproj" /fl /flp:logfile=MyProjectOutput.log;verbosity=diagnostic