在 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 数据库项目的部署脚本的位置吗

ATL 中的 CImage 类

使用 VS2010 的 devenv.exe 部署 Web 应用程序

ATL(COM) 开发下 -- VS2010