在 CI 服务器上构建 ATL VS2010 项目
Posted
技术标签:
【中文标题】在 CI 服务器上构建 ATL VS2010 项目【英文标题】:Build ATL VS2010 project on CI server 【发布时间】: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 方静态链接库。无论如何感谢您的建议) 【参考方案1】:如果其他人遇到同样的问题,这里有一个解决方法:
需要的 ATL 版本在安装了 VS2010 的开发人员机器上可用(例如 VS2010 Professional)。
它位于文件夹%VCINSTALLDIR%ATLMFC
。
默认为c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\
文件夹ATLMFC
可以手动复制到构建服务器到安装VS2010 Express的%VCINSTALLDIR%
。这使得构建服务器能够在不安装 VS2010 的情况下构建 VS2010 ATL 项目。
虽然这是一种解决方法。如果有的话,我希望看到更好的解决方案。所以,我不接受我的回答。
【讨论】:
以上是关于在 CI 服务器上构建 ATL VS2010 项目的主要内容,如果未能解决你的问题,请参考以下文章
VS 2010 Build 中的 ATL DCOM 对象创建失败
当项目名称带有连字符时,为啥 VS 2010 ATL 简单对象向导不会生成 .cpp/.h 文件?
我可以从 TFS CI Build 更改 VS2010 数据库项目的部署脚本的位置吗