操作系统:Microsoft Windows [Version 10.0.14393]
VS-Version:2017 Community
当我运行vswhere.exe
时,我得到了以下回复,并基于官方vswhere
documentation 我可以构建msbuild
的路径,这似乎有效:< / p>
C:\Users\user\Desktop>"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"
Visual Studio Locator version 1.0.62 [query version 1.10.80.60812]
Copyright (C) Microsoft Corporation. All rights reserved.
[...]
installationPath: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community
[...]
C:\Users\user\Desktop>"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe"
Microsoft (R)-Buildmodul, Version 15.1.1012.6693
如果我启动位于"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsMSBuildCmd.bat"
的开发人员命令提示符,我会得到以下结果:
C:\Users\user>"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsMSBuildCmd.bat"
**********************************************************************
** Visual Studio 2017 MSBuild Command Prompt
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
C:\Users\user>where msbuild
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe"
)来调用msbuild
来构建C / C ++ / VC ++项目。这有点错吗?答案 0 :(得分:5)
VS 2017切换到msbuild的本地副本,如果使用VS 2015命令提示符,则会看到不同的全局路径。
where
命令列出它在PATH
上找到的所有匹配的可执行文件,但在运行msbuild
命令时,命令提示符将只使用第一个。
您看到的第二个msbuild.exe
是.NET Framework的一部分 - 这是MSBuild的一个版本,它已集成到.NET Framework中并作为.NET Framework的一部分提供。与最新版本的Visual Studio安装的版本相比,此版本较旧。但出于兼容性原因,它可能会继续包含在.NET Framework中。它甚至可以构建许多项目,然后使用VS安装的目标和任务 - 只需要更改MSBuild本身的项目格式更改将是不兼容的(如用于.NET Core项目的新项目格式)。 / p>
您应始终使用VS 2017版msbuild.exe
来始终获得与visual studio一致的构建结果。