2017-08-27 184 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一致的構建結果。