ArcGIS Engine (AE) 是 ESRI 推出的经典桌面 GIS 开发组件。虽然官方主流支持的版本较旧,但在实际项目中,我们往往需要在较新的开发环境(如 Visual Studio 2019)中使用它。
本文将介绍 AE 主流版本与 VS 的对应关系,以及如何通过修改注册表在 VS2019 中“强行”挂载 AE,并解释 VS2022 为何无法兼容。
1. 主流版本对应关系
官方推荐的开发环境搭配如下表所示。可以看到,AE 10.8 原生最高仅支持到 VS2017。
| AE 版本 | 支持的 VS 版本 | .NET Framework |
|---|---|---|
| 10.2.2 | VS2010 | 3.5 SP1 |
| 10.4.1 | VS2013 / 2015 | 4.5 |
| 10.8 | VS2017 / 2019* | 4.5.2 或更高 |
注意:VS2019 并非原生完美支持,需要进行额外的注册表配置才能识别。
2. VS2019 配置攻略
由于 AE 的安装程序会检测系统注册表中的 VS 版本信息,为了让它识别 VS2019,我们需要通过修改注册表,让系统“伪装”成安装了 VS2015 (版本号 14.0)。
2.1 修改注册表
- 按下
Win + R组合键打开运行,输入regedit并回车打开注册表编辑器。 定位到路径:
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0- 提示:如果没有
14.0项,请右键VisualStudio-> 新建 -> 项,命名为14.0。(注:12.0 对应 VS2013,14.0 对应 VS2015)。
- 提示:如果没有
在
14.0下新建两个字符串值 (String Value):- InstallDir:数值数据修改为 VS2019 主程序所在目录。
- ShellFolder:数值数据修改为 VS2019 安装根目录。
⚠️ 路径警告:
下图示例中使用的是Enterprise(企业版)。如果你安装的是Community(社区版)或Professional(专业版),请务必将路径中的Enterprise替换为对应的版本文件夹名!参考路径示例(社区版):
InstallDir:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\ShellFolder:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\
配置结果如下图所示:

2.2 安装与配置 AE
在 ArcGIS 体系中,ArcObjects (AO) 是底层核心,而 ArcGIS Engine (AE) 是将 AO 的功能封装后的独立软件包。对于开发者而言,只需要安装 AE SDK 即可进行开发。
- 安装 AE:修改完注册表后,运行 AE 安装包,按默认选项一路安装即可(此时它应该能通过环境检测)。
- 新建项目:打开 VS2019,新建一个空白的 Windows 窗体应用 (.NET Framework) 项目。

- 添加窗体:在解决方案资源管理器中,右键项目 -> 添加 -> Windows 窗体。

- 引入引用:右键“引用” -> 添加引用 -> 扩展 -> 选择 ESRI 开头的相关库(如
ESRI.ArcGIS.Carto,ESRI.ArcGIS.Controls,ESRI.ArcGIS.System等)。

- 添加工具箱:打开工具箱 -> 空白处右键 -> 选择项 -> COM 组件 / .NET Framework 组件 -> 勾选 ESRI 的控件(如
MapControl,TOCControl等)。

- 拖拽控件:将控件拖入窗体,如果能正常显示且不报错,说明环境配置成功。

3. 关于 VS2022 的兼容性
结论:ArcGIS Engine 无法在 Visual Studio 2022 中进行窗体设计开发。
原因解析:
Visual Studio 2022 进行了重大的底层架构升级,主程序从 32 位 (x86) 升级到了 64 位 (x64)。
而 ArcGIS Engine (10.x 系列) 是基于古老的 32 位 COM 组件构建的。在 VS2022 的 64 位窗体设计器中,无法加载 32 位的控件,即使强行引用也会报错:
错误提示:无法加载 DLL“ArcGISVersion.dll”: 找不到指定的模块
解决方案:
- 继续使用 AE:请坚守 VS2019 或更早版本。
- 拥抱新技术:如果必须使用 VS2022,建议转型使用 ArcGIS Pro SDK 进行开发(基于 64 位架构,原生支持 VS2022)。

能出一个完整的VS2022的吗