def msbuild(name_or_gen_or_ver):
"""get the MSBuild.exe path"""
ver = to_ver(name_or_gen_or_ver)
if ver < 12: # VS2012 and below
import winreg as wr
msbuild = None
msbvers = ('4.0', '3.5', '2.0')
for v in msbvers:
key = "SOFTWARE\\Microsoft\\MSBuild\\ToolsVersions\\{}\\MS??BuildToolsPath"
try:
val = wr.OpenKey(wr.HKEY_LOCAL_MACHINE, key.format(ver), 0, wr.KEY_READ)
msbuild = os.path.join(val, 'MSBuild.exe')
break
except:
pass
# default to some probable value if no registry key was found
if msbuild is None:
val = 'C:\\Windows\Microsoft.NET\Framework{}\\v{}\\MSBuild.exe'
for v in msbvers:
msbuild = val.format('64' if util.in_64bit() else '', '3.5')
if os.path.exists(msbuild):
break
else:
root = os.environ['ProgramFiles(x86)'] if ver < 15 else vsdir(ver)
val = '{}\\MSBuild\\{}.0\\bin\\{}MSBuild.exe'
msbuild = val.format(root, ver, 'amd64\\' if util.in_64bit() else '')
return msbuild
评论列表
文章目录