Tôi có một dự án C++ (một số ứng dụng giao diện điều khiển 32 bit) được phát triển trong VS2010, xây dựng tốt trên PC của tôi (Windows 7 32-bit) . Máy tính của tôi có cài đặt Microsoft SDK 7.0A, mà tôi nghĩ là đi kèm với VS2010.
Tôi cố gắng xây dựng dự án trên máy chủ xây dựng, không có bất kỳ Visual Studio nào được cài đặt - chỉ có Microsoft SDK 7.1 có mặt ở đó.
tôi cố gắng xây dựng các dự án với sự giúp đỡ của msbuild (điều này cuối cùng sẽ trở thành nhiệm vụ cho Á hậu TeamCity), và trên server build tôi nhận được lỗi sau (các bản ghi chi tiết được cung cấp):Xây dựng dự án C++ trên PC với Windows SDK 7.1 nhưng không có VS2010
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]
tôi giả sử vấn đề liên quan đến tính không có khả năng của msbuild để tìm Microsoft SDK, được cài đặt vào "E:\Program Files\Microsoft SDKs\Windows\v7.1"
.
Có vài lời khuyên làm thế nào để xử lý vấn đề này có sẵn trên web:
- Sao chép một phần của registry dưới
HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1
đểHKCU
(xem WindowsSdkDir is not set correctly in Visual Studio 2008?). Tôi đã không cố gắng giải pháp này vì nó trông quá xấu xí, và quá trình xây dựng sẽ chạy với chứng chỉ tài khoản SYSTEM. - Vượt qua
WindowsSDKDir
làm thông số bổ sung cho MSBuild (như được đề xuất trong TeamCity and MSBuild Quirks #1). - Tinh chỉnh
VCProjectEngine.dll.config.xml
như được đề xuất trong answer đến Include Search Paths in TeamCity build Configurations (Tôi chưa tìm thấy tệp đó trên PC bằng Windows SDK). - Thay đổi bộ công cụ nền tảng trong thuộc tính dự án như được đề xuất trong the answer đến WindowsSdkDir is not set correctly in Visual Studio 2010 (Tôi nghi ngờ điều này sẽ hữu ích, vì PC của tôi chưa cài đặt Windows SDK 7.1).
Trên thực tế khi biên dịch với CL.EXE
mọi thứ diễn ra tốt đẹp (vì tôi có INCLUDE
và LIB
biến được định nghĩa), do đó nó sẽ là một cách giải quyết để buộc msbuild sử dụng/vượt qua các biến môi trường ...
Có các vấn đề tương tự:
- "Differences between building on a machine with VS2010 installed and on a machine with the 7.1 SDK installed" nhưng đối với các dự án .NET.
- Erroneous Windows SDK x64 Compilation Warning (xây dựng dự án 32 bit cho nền tảng 64 bit).
Dù sao có ai thành công với việc tạo dự án Visual C++ 2010 trên PC có cài đặt Windows SDK không?
Xin chào, bạn có thể chỉ định rõ hơn cách bạn chạy Visual Studio 2010 C++ dự án trên một máy chủ xây dựng với đại lý thành phố nhóm? Sử dụng bước xây dựng giải pháp Visual Studio 2010 không hoạt động vì nó có vẻ s tht các MSBuild phụ thuộc vào một thiếu mspdb100.dll DLL – Stefano
@Stefano, thường là giải pháp đúng trong trường hợp của bạn là thêm thư mục 'mspdb100.dll' vào'% PATH% '. – AntonK