从命令提示符运行MSBuild

时间:2013-05-15 13:28:54

标签: python msbuild command-prompt

如果我打开命令提示符,键入msbuild,或/ msbuild后跟路径文件,它说

'msbuild' is not recognized as an internal or external command, operable program or batch file.

但是,当我在visual studio命令提示符下运行相同的行时,它可以工作..有人知道这是为什么吗?

这是我通过命令提示符运行MSBuild的python脚本

import subprocess
filename="C:\Users\bb\Documents\bb\Code\VisualStudio\tree.ProEAPI.UnitTests\tree.ProEAPI.UnitTests.vbproj"
p = subprocess.Popen(['C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe', filename], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in p.stdout.readlines():
    print line,
retval = p.wait()

2 个答案:

答案 0 :(得分:5)

当您启动Visual Studio命令提示符时,它会向“路径”环境变量添加一些其他位置 - 这恰好包括MSBuild的位置。

有趣的附注 - 您可以批量使用'where'命令来查找应用程序的路径。例如,在Visual Studio命令行中运行“where msbuild”会输出:

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC>where msbuild
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe
C:\Windows\Microsoft.NET\Framework64\v3.5\MSBuild.exe

但是在标准命令提示符下输出:

C:\Users\stephen.edmonds>where msbuild
INFO: Could not find files for the given pattern(s).

您可以使用命令'set path'

查看路径环境变量的当前值

答案 1 :(得分:1)

因为命令pompt缺少msbuild.exe的路径环境变量的位置。通常C:\ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 for .net 4.尝试在计算机管理控制台或命令提示符下设置它:

set path=%path%;C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\ 

然后再次尝试msbuild。