tjd*_*bts 42 msbuild visual-studio-2010
我正准备使用msbuild构建一个Visual Studio解决方案文件.我使用以下命令行来构建解决方案
msbuild.exe SolutionFile.sln /t:Build/p:Configuration=Release;Platform=Win32
Run Code Online (Sandbox Code Playgroud)
即使构建在某个时刻开始,构建看起来仍然挂起并且无法向前移动,如下所示
Done Building Project "D:\SolutionPath\ProjectFile10.vcxproj" (default targets).
Run Code Online (Sandbox Code Playgroud)
有很多的.proj下SolutionFile.sln那些我必须建立.
我必须使用msbuild.exe而不是devenv.com
the*_*ill 32
有一种技术可以诊断msbuild中发生的事情,这可以帮助你弄清楚这里发生了什么.从命令提示符处设置环境变量:
set msbuildemitsolution=1
Run Code Online (Sandbox Code Playgroud)
一旦你运行了msbuild,那么这将生成一个.metaproj文件.此文件是msbuild在内部使用但随后删除的文件.您可以阅读它以找出实际目标的名称.该Build目标展开,以显示它实际上是调用.然后,您可以尝试使用/tmsbuild 的标志构建单个目标,以确定导致问题的目标.
Sof*_*ter 25
将verbosity属性设置为diagnostic并将输出保存到文件.这将帮助您确定解决方案中的哪个项目挂起并帮助诊断您的问题.
命令行语法如下,将输出保存到名为MyProjectOutput.log的文件中:
msbuild SolutionFile.sln /t:build /fl /flp:logfile=MyProjectOutput.log;verbosity=diagnostic
Run Code Online (Sandbox Code Playgroud)
在您列出的命令中传递的/ t目标构建参数之后,您还需要一个空格.
msbuild.exe SolutionFile.sln /t:Build /p:Configuration=Release;Platform=Win32
Run Code Online (Sandbox Code Playgroud)
此外,您确定每个项目都包含"发布"和"Win32"配置吗?您也可以尝试运行以下命令,看看编译的内容.Msbuild将自动运行所需的默认目标和配置.
msbuild SolutionFile.sln
Run Code Online (Sandbox Code Playgroud)
您可以尝试的另一个选项是只编译项目并查看生成的内容:
msbuild "D:\SolutionPath\ProjectFile10.vcxproj" /fl /flp:logfile=MyProjectOutput.log;verbosity=diagnostic
Run Code Online (Sandbox Code Playgroud)