我从Python脚本构建Visual Studio解决方案.一切都很好,除了我无法捕获构建输出.
p = subprocess.Popen(['devenv', 'solution.sln', '/build'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(out, err) = p.communicate()
ret = p.returncode
Run Code Online (Sandbox Code Playgroud)
在这里,无论是out和err总是空的.无论构建成功与否,都会发生这种情况p.returncode.
gma*_*man 25
将其从'devenv'更改为'devenv.com'.Apparenty Popen首先查找.EXE,但shell首先查找.COMs.切换到'devenv.com'对我有用.
对于增量构建,devenv明显快于msbuild.我刚刚做了一个带有最新项目的构建,意味着什么都不应该发生.
devenv 23秒msbuild 55秒.
您应该使用它来构建解决方案msbuild.exe,该解决方案旨在向 stdout 和 stderr 提供反馈。msbuild.exe位于
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\msbuild.exe(构建 VS2005 解决方案)或C:\WINDOWS\Microsoft.NET\Framework\v3.5\msbuild.exe(构建 VS2008 解决方案)
请注意,msbuild.exe不要/build像 那样采取开关devenv.exe。