VS2017中msbuild的不同路径

时间:2017-08-27 07:40:12

标签: visual-studio msbuild visual-studio-2017

操作系统: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
  1. 为什么以及启动开发人员命令提示符后返回的第二个路径是什么
  2. 我总是使用第一个路径("C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe")来调用msbuild来构建C / C ++ / VC ++项目。这有点错吗?

1 个答案:

答案 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一致的构建结果。