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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiangqiang2015/article/details/82291152

 

目录

 

1、前言

2、自定义项目组成

3、Pro配置组织解析

3.1 Bin目录

3.1.1 Bin目录

3.1.2 Extentions目录

3.2 自定义程序集位置

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

扫描二维码关注公众号,回复: 3423743 查看本文章

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

 

猜你喜欢

转载自blog.csdn.net/xiangqiang2015/article/details/82291152