Pro定制开发路径与文件分析

 

目录

 

1、前言

2、自定义项目组成

3、Pro配置组织解析

3.1 Bin目录

3.1.1 Bin目录

3.1.2 Extentions目录

3.2 自定义程序集位置

3.2.1 编译项目时会生成哪些文件?

3.2.2 启动时读取的插件程序集存放位置

3.2.3 分析一

3.2.4 分析二

3.2.5 分析三

3.2.6 总结

4、 自定义功能配置组织方案

4.1 自定义启动方式

4.2 程序集组织

4.2.1 Net运行时如何查找程序集

4.2.2 使用元素指定程序集位置

4.2.3 公共的程序集组织方式

4.2.4 参考Pro子模块组织自定义的插件

5、参考地址:


1、前言

在网上查询了很多Pro开发的资料,可惜没有找到以Pro定制开发的方式如何形成自己的产品,想要以Pro定制开发的方式形成自己的产品,必须解决配置组织方式、自定义程序集加载、部署发布等问题。

此文解决以下几个问题:

  1. 如何以自定义配置启动;
  2. 自定义的插件程序集如何组织存放;
  3. 怎样部署。

2、自定义项目组成

首先介绍自定义的极简软件系统的组成部分:

  1. 配置管理模块:配置和开发自定义的启动界面、登录界面等。
  2. 业务插件模块:自定定制和开发的一些插件功能。
  3. 公共函数库:封装的一些业务模块调用的公共函数库。

业务模块程序集依赖公共函数程序集:

 

3、Pro配置组织解析

首先来看看Pro是如何组织他的dll和配置的。

 

3.1 Bin目录

3.1.1 Bin目录

Bin目录包含:

  • 应用程序集和应用程序集配置;

 

  • 核心程序集及依赖的其他程序集:

  • Extensions目录:子模块dll及配置存放目录;
  • Python目录:Python环境;
  • zh-CN目录:存放汉化相关的目录;

等等。

 

Bin 目录

 

 

 

3.1.2 Extentions目录

Exentions存放了Pro所有子模块相关的dll和配置,譬如编辑模块、GP模块等。每个模块文件夹存放模块相关的dll、daml配置以及依赖的dll和配置等。

Extentions 目录

 

子模块目录

 

 

 

 

3.2 自定义程序集位置

我们定制开发时生成的应用程序集Pro是怎么存放的呢?

 

 

3.2.1 编译项目时会生成哪些文件?

  • 项目生成目录下的文件:

 

  • 此外,在用户的文档目录C:\Users\Administrator\Documents\ArcGIS\AddIns\ArcGISPro】下也会生成一份ESRI AddinX File文件

 

 

 

 

3.2.2 启动时读取的插件程序集存放位置

通过ConfigurationManager类的OnUpdateDatabase方法观察Pro启动时读取自定义的dll位置。

OnUpdateDatabase 方法介绍

 

Pro运行时经调试发现读取的DLL位置:

C:\Users\Administrator\AppData\Local\ESRI\ArcGISPro\AssemblyCache

【C:\Users\Administrator\AppData\Local\ESRI\ArcGISPro\AssemblyCache】目录下的内容:

 

 

3.2.3 分析一

删除用户文档目录下的内容,启动Pro会加载自定义的插件模块吗?

结果

不会加载自定义的插件模块,并清除AssemblyCache目录下的内容。

 

 

3.2.4 分析二

删除项目Debug和AssemblyCache目录下的内容,启动Pro会加载自定义的插件模块吗?

结果:

会加载自定义的插件模块,并在AssemblyCache目录下生成程序集信息。

 

 

3.2.5 分析三

插件依赖的dll是怎么组织的?

如果将项目的属性的复制到本地属性设置为false,则编译时不会像依赖的dll复制到生成目录,同样也不会嵌入到ESRI AddinX File文件中。启动Pro时会因为缺乏依赖的dll会导致插件功能不能正常使用。

如果将复制到本地设置为true,则会嵌入到ESRI AddinX File文件中。

 

复制到本地设置为false

 

复制到本地设置为true

 

 

 

3.2.6 总结

  • ESRI AddinX File文件包含了程序插件相关的配置信息、.dll甚至.pdb文件。
  • Pro启动时会读取用户文档目录【C:\Users\Administrator\Documents\ArcGIS\AddIns\ArcGISPro】下ArcGIS的自定义插件信息【ESRI AddinX File文件】,并解析该文件的配置信息,另外以此在目录【C:\Users\Administrator\AppData\Local\ESRI\ArcGISPro\AssemblyCache】下抽取生成DLL。
  • Pro启动时加载的程序集位置出来Bin和Extentions目录下的dll外,还会加载目录【C:\Users\Administrator\AppData\Local\ESRI\ArcGISPro\AssemblyCache】下的dll。
  • 使用Pro的【ESRI AddinX File文件】定制插件,需要包含依赖的dll。

 

4、 自定义功能配置组织方案

4.1 自定义启动方式

按以下方式创建自己的快捷方式就可以以自定义的配置方式启动ArcGIS Pro。

  • 将配置项目的生成文件拷贝到ArcGIS Pro的bin目录。
项目生成目录
Bin目录

 

  • 创建ArcGIS Pro.exe的框架方式,右键属性-快捷方式-目标:设置为以自己定义的配置启动。

 

 

4.2 程序集组织

在3.2章节分析了Pro对用户开发的插件的组织方式,但是用于开发产品不适于进行自动化部署,有可能在清理磁盘空间被用户勿删,另外有个更大的问题时如果开发的插件依赖其他的dll,需要把依赖的dll都包含在ESRI AddinX File文件里面,否则程序无法运行,这样会导致发布的文件特别大。

那么我们是否有其他的解决方案去组织自己开发的程序集和配置呢?

 

 

4.2.1 Net运行时如何查找程序集

请参阅运行时如何查找程序集

 

 

4.2.2 使用<probing>元素指定程序集位置

使用应用程序配置文件中的<probing>元素来指定运行时在查找程序集时应搜索的子目录。以下示例显示如何指定运行时应搜索的目录。

privatePath属性包含运行时应搜索程序集的目录。如果应用程序位于C:\ Program Files \ MyApp,则运行时将查找未在C:\ Program Files \ MyApp \ Bin,C:\ Program Files \ MyApp \ Bin2 \ Subbin中指定代码库的程序集,和C:\ Program Files \ MyApp \ Bin3。privatePath指定的目录必须是应用程序基目录的子目录。

 

 

4.2.3 公共的程序集组织方式

  • 在bin目录下新建Common文件夹;

  • 将公共程序集拷贝都该目录;
  • 修改ArcGISPro的应用程序配置文件,将Common目录加入到PrivatePath里面。
    应用程序配置

 

内容

 

 

 

4.2.4 参考Pro子模块组织自定义的插件

在Extentions文件夹下新建自定义模块的目录CustomFeatures,将插件相关的dll和daml配置拷贝过去。依赖的程序集放到Bin的子目录Common文件夹下,无需拷贝过来。

 

 

5、参考地址:

https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/specify-assembly-location

http://pro.arcgis.com/zh-cn/pro-app/sdk/

https://github.com/esri/arcgis-pro-sdk/wiki/ProSnippets-Framework

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值