Подтвердить что ты не робот

Создание проекта С++ на ПК с Windows SDK 7.1, но без VS2010

У меня есть проект на С++ (какое-то консольное 32-разрядное приложение), разработанное в VS2010, которое прекрасно работает на моем ПК (32-разрядная версия Windows 7). На моем ПК установлен Microsoft SDK 7.0A, который, я думаю, поставляется в комплекте с VS2010.
Я пытаюсь построить проект на сервере сборки, на котором нет установленной Visual Studio. Там присутствует только Microsoft SDK 7.1.
Я пытаюсь создать проект с помощью msbuild (это в конечном итоге станет задачей для бегуна TeamCity), а на сервере сборки я получаю следующие ошибки (предоставляется подробный журнал):

Project "E:\win\core.sln" on node 1 (default targets).
ValidateSolutionConfiguration:
  Building solution configuration "Debug|Win32".
Project "E:\win\core.sln" (1) is building "E:\win\core_unittests.vcxproj" (2) on node 1 (default targets).
Project "E:\win\core_unittests.vcxproj" (2) is building "E:\cpptest\win\cpptest.vcxproj" (3) on node 1 (default targets).
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.Targets(847,9): warning MSB3644: The reference assemblies for framework ".NETFramework,Version=v4.0" were not found. To resolve this, install the SDK or Targeting Pack for this framework version or retarget your application to a version of the framework for which you have the SDK or Targeting Pack installed. Note that assemblies will be resolved from the Global Assembly Cache (GAC) and will be used in place of reference assemblies. Therefore your assembly may not be correctly targeted for the framework you intend. [E:\cpptest\win\cpptest.vcxproj]
C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(297,5): warning MSB8003: Could not find WindowsSDKDir variable from the registry.  TargetFrameworkVersion or PlatformToolset may be set to an invalid version number. [E:\win\cpptest.vcxproj]
InitializeBuildStatus:
  Touching "E:\cpptest\win\..\..\..\out\Debug\cpptest\cpptest.unsuccessfulbuild".
ClCompile:
  C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\CL.exe /c /ZI /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D _LIB /D _UNICODE /D UNICODE /Gm /EHsc /RTC1 /MTd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"E:\cpptest\win\..\..\..\out\Debug\cpptest\\" /Fd"E:\cpptest\win\..\..\..\out\Debug\cpptest\vc100.pdb" /Gd /TP /analyze- /errorReport:queue ../missing.cpp
  missing.cpp
e:\cpptest\missing.cpp(36): fatal error C1083: Cannot open include file: 'windows.h': No such file or directory [E:\cpptest\win\cpptest.vcxproj]

Я предполагаю, что проблема связана с невозможностью msbuild найти Microsoft SDK, который установлен в "E:\Program Files\Microsoft SDKs\Windows\v7.1".

Существует несколько советов по устранению этой проблемы в Интернете:

Собственно при компиляции с CL.EXE все идет хорошо (потому что у меня определены переменные INCLUDE и LIB), поэтому было бы обходным путем заставить msbuild использовать/передавать переменные среды...

Есть похожие проблемы:

В любом случае кто-нибудь преуспел в создании проектов Visual С++ 2010 на ПК с установленной Windows SDK?

4b9b3361

Ответ 1

Наконец-то я нашел какое-то полезное и содержательное решение проблемы - внутри Можем ли мы построить *.vcxproj(проект на С++) с помощью MSBuild 4.0 без установки Visual Studio 2010?.
Вкратце: я должен явно указать Platform Toolset при создании решения на ПК без VS2010. Команда будет выглядеть так:

msbuild /p:PlatformToolset=Windows7.1SDK core.sln

Вам, вероятно, придется идти одинаково, если ваш проект имеет v100 или v90, указанный в качестве набора инструментов платформы.

И дополнительный намек для энтузиастов TeamCity, работающих на сервере на ПК с одиночным Windows SDK.
Вместо изменения всех шагов сборки достаточно указать набор инструментов платформы в свойствах агента. Для этого добавьте следующую строку в ?:\TeamCity\buildAgent\conf\buildAgent.properties:

system.PlatformToolset=Windows7.1SDK

Счастливое здание!:)

Ответ 2

Также вы можете добавить этот node и значение в реестр (правильно с вашим установочным сервером и выиграть версию 32/64).

--- начать .reg файл ---

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Setup\VS]
"ProductDir"="C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\"

--- конец .reg файла ---

из-за MSBuild script % ProgramFiles (x86)%\MSBuild\Microsoft.Cpp\v4.0\Платформы\Win32\PlatformToolsets\Windows7.1SDK\Microsoft.Cpp.Win32.Windows7.1SDK.props "поиск VSInstallDir.