Сборка проекта Visual Studio 2015 C ++ (v140) с помощью MSBuild Ошибка — v140 не может быть найден

У меня Visual Studio 2013 и 2015 установлены бок о бок. Я только что обновил комбинированное решение (C #, C ++, C ++ / CLI) до 2015 года и установил Platform Toolset на v140.

Сборка из Visual Studio работает нормально, но ее нельзя скомпилировать из MSBuild. Я использую MSBuild 14 и MSBuild жалуется, что не может найти v140, но это чепуха, потому что v140 установлен на компьютере в «c: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V140».

Совет по обновлению решения не может быть выполнен, потому что решение уже обновлено, и в контекстном меню решения такого пункта нет.

Если я переключу инструменты платформы проекта на v120, это сработает.

Подробности:

c:\git\hewerMaster>"c:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe"  c:\git
\hewerMaster\Hewer.sln /property:Configuration=Debug /property:Platform=x86
Microsoft (R) Build Engine version 14.0.23107.0
Copyright (C) Microsoft Corporation. All rights reserved.

Building the projects in this solution one at a time. To enable parallel build,
please add the "/m" switch.
Build started 9/12/2015 4:00:25 PM.
Project "c:\git\hewerMaster\Hewer.sln" on node 1 (default targets).
ValidateSolutionConfiguration:
Building solution configuration "Debug|x86".
ValidateProjects:
The project "HewerDotNetWrapper" is not selected for building in solution con
figuration "Debug|x86".
The project "VisualHewer" is not selected for building in solution configurat
ion "Debug|x86".
The project "UnitTestWrapper" is not selected for building in solution config
uration "Debug|x86".
The project "ParamsFormatConverter" is not selected for building in solution
configuration "Debug|x86".
The project "UnitTestGenerator" is not selected for building in solution conf
iguration "Debug|x86".
The project "HewerUnitTestDotNet" is not selected for building in solution co
nfiguration "Debug|x86".
Project "c:\git\hewerMaster\Hewer.sln" (1) is building "c:\git\hewerMaster\Hewe
rRedirect\HewerRedirect.csproj" (2) on node 1 (default targets).
CoreCompile:
Skipping target "CoreCompile" because all output files are up-to-date with resp
ect to the input files.
_CopyAppConfigFile:
Skipping target "_CopyAppConfigFile" because all output files are up-to-date wi
th respect to the input files.
CopyFilesToOutputDirectory:
HewerRedirect -> c:\git\hewerMaster\anyCPU\Debug\pbrain-hewer.exe
Done Building Project "c:\git\hewerMaster\HewerRedirect\HewerRedirect.csproj" (
default targets).

Project "c:\git\hewerMaster\Hewer.sln" (1) is building "c:\git\hewerMaster\Hewe
r\Hewer.vcxproj" (3) on node 1 (default targets).
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.t
argets(64,5): error MSB8020: The build tools for v140 (Platform Toolset = 'v140
') cannot be found. To build using the v140 build tools, please install v140 bu
ild tools.  Alternatively, you may upgrade to the current Visual Studio tools b
y selecting the Project menu or right-click the solution, and then selecting "U
pgrade Solution...". [c:\git\hewerMaster\Hewer\Hewer.vcxproj]
Done Building Project "c:\git\hewerMaster\Hewer\Hewer.vcxproj" (default targets
) -- FAILED.

Done Building Project "c:\git\hewerMaster\Hewer.sln" (default targets) -- FAILE
D.Build FAILED.

ОБНОВИТЬ:

  • Есть некоторые проекты, пропускаемые с Debug X86. Это намеренно.
  • Первоначально проект был создан в VS2008, затем обновлен до VS2013, а затем обновлен до VS2015.
  • На этом компьютере установлены две Visual Studio (сообщество 2013 и сообщество 2015). 2013 был установлен первым, 2015 позже.

Настройки реестра выглядят так:
введите описание изображения здесь

Настройки реестра MS Build

UPDATE2:
Минимальный, полный и проверяемый пример

Я создал пустое консольное приложение C ++ в Visual Studio 2015:

https://dl.dropboxusercontent.com/u/53387801/ConsoleApplication_v140.zip

#include "stdafx.h"
int main()
{
return 0;
}

Я могу построить его в Visual Studio, но я сталкиваюсь с той же проблемой в MSBuild:

c:\>"c:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild" "C:\temp\vs2015_simplest\C
onsoleApplication1\consoleApplication1.sln"Microsoft (R) Build Engine version 14.0.23107.0
Copyright (C) Microsoft Corporation. All rights reserved.

Building the projects in this solution one at a time. To enable parallel build,
please add the "/m" switch.
Build started 9/16/2015 10:16:20 AM.
Project "C:\temp\vs2015_simplest\ConsoleApplication1\consoleApplication1.sln" o
n node 1 (default targets).
ValidateSolutionConfiguration:
Building solution configuration "Debug|x64".
Project "C:\temp\vs2015_simplest\ConsoleApplication1\consoleApplication1.sln" (
1) is building "C:\temp\vs2015_simplest\ConsoleApplication1\ConsoleApplication1
\ConsoleApplication1.vcxproj" (2) on node 1 (default targets).
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.t
argets(64,5): error MSB8020: The build tools for v140 (Platform Toolset = 'v140
') cannot be found. To build using the v140 build tools, please install v140 bu
ild tools.  Alternatively, you may upgrade to the current Visual Studio tools b
y selecting the Project menu or right-click the solution, and then selecting "U
pgrade Solution...". [C:\temp\vs2015_simplest\ConsoleApplication1\ConsoleApplic
ation1\ConsoleApplication1.vcxproj]
Done Building Project "C:\temp\vs2015_simplest\ConsoleApplication1\ConsoleAppli
cation1\ConsoleApplication1.vcxproj" (default targets) -- FAILED.

Done Building Project "C:\temp\vs2015_simplest\ConsoleApplication1\consoleAppli
cation1.sln" (default targets) -- FAILED.Build FAILED.

"C:\temp\vs2015_simplest\ConsoleApplication1\consoleApplication1.sln" (default
target) (1) ->
"C:\temp\vs2015_simplest\ConsoleApplication1\ConsoleApplication1\ConsoleApplica
tion1.vcxproj" (default target) (2) ->
(PlatformPrepareForBuild target) ->
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform
.targets(64,5): error MSB8020: The build tools for v140 (Platform Toolset = 'v1
40') cannot be found. To build using the v140 build tools, please install v140
build tools.  Alternatively, you may upgrade to the current Visual Studio tools
by selecting the Project menu or right-click the solution, and then selecting
"Upgrade Solution...". [C:\temp\vs2015_simplest\ConsoleApplication1\ConsoleAppl
ication1\ConsoleApplication1.vcxproj]

0 Warning(s)
1 Error(s)

Time Elapsed 00:00:00.14

c:\>

РЕШИТЬ:

Переменная среды VisualStudioVersion была установлена ​​на 12,0 вместо 14,0 Изменение значения до 14.0 решило проблему.

Простое консольное приложение начало работать сразу после изменения переменной среды VisualStudioVersion и после выхода из системы, войдите в систему.

Исходный проект все еще не может быть собран после изменения переменной среды VisualStudioVersion. Контекстное меню решения для ретаргетинга появилось в Visual Studio 2015. Поэтому я перенастроил решение. После ретаргетинга решение все еще не может быть скомпилировано (v140 не найден). Наконец я изменил набор инструментов платформы с v140 (не установлено) в Visual Studio 2015 (v140). Теперь решение может быть скомпилировано из Visual Studio и MSBuild.

10

Решение

Ваша проблема в том, что вы устанавливаете переменную среды VisualStudioVersion в 12.0, Это говорит MSBuild об использовании инструментов Visual Studio 2013 (V120), которые не поддерживают инструменты сборки Visual Studio 2015 (V140). Если вы сбросили эту переменную среды или передали /p:VisualStudioVersion=14.0 вариант MSBuild вашего проекта, должен построить. (Или хотя бы обойти эту ошибку).

Вы можете найти больше информации о переменной VisualStudioVersion в записи блога MSDN под названием Совместимость проекта Visual Studio и VisualStudioVersion.

11

Другие решения

Одним из решений является то, что вы можете просто изменить набор инструментов платформы, который доступен в вашей системе. Тогда это нормально.

2

По вопросам рекламы [email protected]