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

У меня есть проект C ++ (своего рода консольное 32-разрядное приложение), разработанный в VS2010, который отлично работает на моем ПК (Windows 7 32 -немного). На моем компьютере установлен Microsoft SDK 7.0A, который, как мне кажется, идет в комплекте с VS2010.
Я пытаюсь собрать проект на сервере сборки, на котором не установлена ​​Visual Studio - там присутствует только Microsoft SDK 7.1.
Я пытаюсь собрать проект с помощью msbuild (это в конечном итоге станет задачей для Runner 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" .

Есть несколько советов, как решить эту проблему, доступных в Интернете:

  1. Скопируйте часть реестра в HKLM \ SOFTWARE \ Microsoft \ Microsoft SDKs \ Windows \ v7.1 - HKCU (см. WindowsSdkDir установлен неправильно в Visual Studio 2008? ). Я не пробовал этот обходной путь, потому что он выглядит слишком некрасиво, и процесс сборки будет выполняться с учетными данными SYSTEM-учетной записи.
  2. Передайте WindowsSDKDir в качестве дополнительных параметров в MSBuild (как предложено в TeamCity и особенности MSBuild # 1 ).
  3. Настройка VCProjectEngine.dll.config.xml , как предложено в ответе на Включить пути поиска в конфигурации сборки TeamCity (я не нашел такого файла на ПК с Windows SDK).
  4. Измените набор инструментов платформы в свойствах проекта, как предложено в , ответ на WindowsSdkDir установлен неправильно в Visual Studio 2010 (я сомневаюсь, что это поможет, потому что мой компьютер не не установлен Windows SDK 7.1).

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

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

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

10
задан Community 23 May 2017 в 11:45
поделиться