【发布时间】:2017-03-25 14:39:37
【问题描述】:
我需要在没有安装 VS2010 的 CI 服务器上构建 VS2010 C++ ATL 项目。
项目可以在安装了VS2010的开发者机器上成功构建。但 VS2010 无法安装到 CI 服务器,因为这需要许可证。
所以,现在我正在尝试以下方法:
- 已安装 VS2010 Express
- 为 Windows 7 安装了 Microsoft Windows SDK
- 已安装 Windows 驱动程序工具包(包括 ATL 和 MFC)
虽然我在 CI 机器上安装了 ATL 头文件和库,但我收到以下错误:
错误 C2039:“AtlSetPerUserRegistration”:不是“ATL”的成员
错误 C3861:“AtlSetPerUserRegistration”:找不到标识符
我比较了来自 VS2010 安装和来自 WDK 的 atlbase.h 标头。它们是不同的:
- 来自 VS2010 安装的 atlbase.h 确实有 AtlSetPerUserRegistration 定义;
- WDK 安装中的atlbase.h 没有。
这会导致上面提到的错误。
问题是:如何在不安装VS2010的情况下配置CI构建机构建ATL项目?
更新:
检查atldef.h 文件我发现以下内容:
VS2010版本有一行:
#define _ATL_VER 0x0A00 // Active Template Library version 10.00
而WDK版本有一行:
#define _ATL_VER 0x0800 // Active Template Library version 8.00
因此,WDK ATL 版本与 VS2010 ATL 版本不同。这就是为什么它们不是 100% 兼容的原因。
现在的问题是:如何在没有安装 VS2010 的情况下在构建服务器上获取 ATL v10.0?
【问题讨论】:
-
当前的 ATL 或多或少只安装在 Visual Studio 中。 WDK 的 ATL 仅在基本方面兼容。您尝试了非免费的 VS2010 Pro,因此您需要 CI 服务器的商业许可证。您可能更喜欢更新的 VS 版本,其中包含免费(社区)版本中的 ATL。
-
我需要在 TC 中设置超过 10 个代理。为它们中的每一个设置 VS2010 Pro 似乎并不是最佳解决方案。而且升级到较新版本的 VS 相当困难,因为有一组遗留应用程序依赖于 3rd 方静态链接库。无论如何感谢您的建议)
标签: visual-studio-2010 continuous-integration atl