ArcObjects SDK for Microsoft .Net Framework 10.1或10.2在安装时,会检测VS2010或VS2012的安装路径,而有时因为其他项目使用限制而且不愿同时安装多个版本的VS,通过修改注册表方式实现安装

背景

ArcObjects SDK for Microsoft .Net Framework 10.1或10.2在安装时,会检测VS2010或VS2012的安装路径,而有时因为其他项目使用限制而且不愿同时安装多个版本的VS,通过修改注册表方式实现安装

具体步骤

1.修改注册表

首先打开注册表,window系统可以通过win+R,输入regedit后,回车打开注册表

找到计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\10.0,点击10.0文件夹,此时是没有InstallDir和ShellFolder两个字符串值

找到计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\12.0,点击12.0文件夹,查看InstallDir值,并复制

回到10.0目录,右键新建->字符串值,新建InstallDir值,双击编辑值,将刚复制的粘贴

同样的处理,添加ShellFolder

2.安装ArcObjects SDK for Microsoft .Net Framework

打开ArcGIS Desktop 或ArcEngine安装程序,找到ArcObjects SDK for Microsoft .Net Framework,点击安装,此时就不会提示要求VS2010或VS2012安装环境了,下面以ArcGIS Desktop 为例:

图1-安装
图1-安装

3. 在工具箱中添加ArcGIS相关组件

由于通过修改注册表的方式安装的ArcObjects SDK for Microsoft .Net Framework,因此,可能会导致VS中没有ArcGIS相关工具,需要手动添加

打开VS2013,任意打开一个窗体,打开工具箱,会发现没有ArcGIS选项卡,因此,首先右键新建选项卡,然后右键,点击选择项,在.NET Framework组件下,找到下图所示的ArcGIS组件

图2-添加ArcGIS组件
图2-添加ArcGIS组件

方案1

注意,如果在.NET Framework下找不到相关组件,可以点击浏览,找到ArcObjects SDK for Microsoft .Net Framework的安装目录下的DotNet,一般路径为D:\Program Files (x86)\ArcGIS\DeveloperKit10.2\DotNet如下图所示,可以按需添加,或者按住Shift全选添加。

图3-浏览组件dll
图3-浏览组件dll

勾选需要的组件,点击确定后,在新建的选项卡下出现组件


图4-组件

红色框为新添加的.NET组件,上面两个是COM组件,暂时不需要使用,下节介绍.NET组件和COM组件的区别

方案2

在Desktop安装目录的bin下找到需要的控件,以.ocx为后缀,选中后拖入工具箱

添加引用

在不做任何手动操作时,安装了ArcGIS Desktop之后,可以在COM下的类型库中找到ArcGIS 相关的COM组件,如下图所示

图5-COM类型库中的ArcGIS相关组件
图5-COM类型库中的ArcGIS相关组件

注意点击引用这些组件时,引用呈现下图所示结果:


图6-添加COM组件引用后
图6-添加COM组件引用后

但会发现找不到Esri.ArcGIS.Version的库,而这个库必须在主函数入口处使用获得授权许可,之后才能使用ArcEngine中相关的类或接口。

因此,这里在添加引用是选择.NET组件,点击浏览找到ArcObjects SDK for Microsoft .Net Framework的安装目录下的DotNet,一般路径为D:\Program Files (x86)\ArcGIS\DeveloperKit10.2\DotNet如下图所示,选择Esri.ArcGIS.Version.dll,其他库VS会根据需要自动引用。如上图图3所示.
注意点击引用这些组件时,引用呈现下图所示结果:


图7-添加NET组件引用后
图7-添加NET组件引用后

Program.cs中授权

在Main函数中添加 ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);,如下图所示

图8-添加授权
图8-添加授权

直至就可以在一个应用程序中使用ArcEngine的功能了。

当然如果你想使用VS创建ArcGIS模板应用程序,此时你会发现Visual C#下没有ArcGIS选项,这时又需要我们手动添加了

图9-手动安装之前
图9-手动安装之前

手动添加ArcGIS项目模板

由于我们最开始安装SDK时,采用了修改注册表的方式骗过ArcObject检测,因此,模板默认安装在了但是设置的VS2013安装路径Microsoft Visio Studio 12.0下了

  1. 将模板拷贝至vs模板库中
    找到D:\Program Files (x86)\Microsoft Visual Studio 12.0\Microsoft Visual Studio 10.0,在Common7/IDE下有两个文件夹ItemTemplates/CSharp/ArcGIS,ProjectTemplates/CSharp/ArcGIS,
    分别拷贝在vs2013模板文件位置,如:
    D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ItemTemplates\CSharp和
    I:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ProjectTemplates\CSharp
  2. 右键,以管理员权限运行vs2013,也就是启动vs2013
  3. 重新安装一次模板

    • 打开vs2013/2015的命令行工具
      2013:
      开始–> 所有应用 –> Microsoft Visual Studio 2013 –> Visual Studio Tools,打开后 vs2013开发人员命令提示
      图10-vs2013开发人员命令提示
      2015或更高:
      开始–> 所有应用 –> Microsoft Visual Studio 2015 –> vs2015开发人员命令提示(可能会叫Visual Studio 2015 Command Prompt )
    • 执行如下命令
      devenv.exe/InstallVSTemplates
      需要注意的事情是,这个命令执行后,不会马上出现项目或项模板,需要重新打开vs2017,新建时会重新初始化模板。

      如果第三步有问题,换成用管理员权限运行。

  4. 效果
    C#下出现ArcGIS相关模板
    图11-成功添加ArcGIS模板