2017-08-27 181 views
1

OS:Microsoft Windows [Version 10.0.14393]不同路径的MSBuild在VS2017

VS-版本:2017 Community

当我运行vswhere.exe我得到下面的背部和基于官方vswheredocumentation我可以建立到msbuild路径和这似乎工作:

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

MSBuild传统上包含在.NET安装中。但是,当它需要做更多的工作时,停止扩展,特别是在VS2010上构建C++项目,在VS2012上支持WinRT并获得全新的api。所以它作为一个独立的产品被剥离出来,只有一个VS安装。旧版本保留给依靠MSBuild代码的用户,并保持运行的自建构建服务器。它不适合构建VS2017或C++项目,缺少的.targets文件是最大的障碍。 –

回答

2

VS 2017切换到msbuild的本地副本,如果您使用的是VS 2015命令提示符,则会看到不同的全局路径。

where命令列出所有符合条件的可执行文件,它发现在PATH,但只有第一个会被命令提示符下,当您运行msbuild命令一起使用。

您看到的第二个msbuild.exe是.NET Framework的一部分 - 这是集成到.NET Framework中并作为其一部分提供的MSBuild版本。与最新版本的Visual Studio安装的版本相比,此版本较旧。但出于兼容性原因,它可能会继续被包含在.NET Framework中。它甚至能够构建大量项目,然后使用由VS安装的目标和任务 - 只需要对MSBuild本身进行更改的项目格式更改将不兼容(如用于.NET Core项目的新项目格式)。

您应该始终使用VS 2017版本msbuild.exe来始终获得与Visual Studio一致的构建结果。