ESRI.ArcGIS.AxControls 与 ESRI.ArcGIS.Controls的各种含义,
ArcEngine与 VS2005/08紧密集成,在工具箱中有基本的ArcEngine 控件,这里控件来源于那里呢?通过在工具箱的快捷菜单中的“选择项”命令,可以看到如下图选项:
从上图所以看出,工具箱中
这些控件,均来源于,ESRI.ArcGis.AxControl 这个程序集中,这个程序集已经位于全局程序集缓存(Global Assembly Cache,GAC)目录中,什么时全局程序集缓存目录呢?这个问题可以详细参考《框架设计(第2版) CLR Via C#》一书P61页,一般来说,该目录的路径是:C:\WINDOWS\assembly
以下是在该目录底下找到该程序集的截图:
根据信息,尝试在cmd窗口中执行以下命令,将会看到,这个程序集实际对应的dll文件,
chdir C:\WINDOWS\assembly
chdir GAC_MSIL
chdir ESRI.ArcGIS.AxControls
chdir 9.3.0.1770__8fc3cc631e44ad86
dir
命令执行截图如下:
当将一个 axLicenseControl和一个axMapControl 添加到窗口上时,可以发现,在引用中添加了以下程序集:
注意,看起来似乎是名称空间,其实是程序集!
可以在属性窗口中看到各程序集的路径。
ESRI.ArcGIS.AxControls:C:\Program Files\ArcGIS\DotNet\ESRI.ArcGIS.AxControls.dll
ESRI.ArcGIS.Controls:C:\Program Files\ArcGIS\DotNet\ESRI.ArcGIS.Controls.dll
通过对象浏览器,可以看到,两个程序集下的名称空间都是:ESRI.ArcGIS.Controls
如下图:
所以,不可能使用 using ESRI.ArcGIS.AxControls这样的语句的!因为这不是一个名称空间,而使用 using ESRI.ArcGIS.Controls 这个名称空间下面的类时,你可能使用了 ESRI.ArcGIS.AxControls或者 ESRI.ArcGIS.Controls 程序集下的类。
ESRI.ArcGIS.AxControls程序集下主要类是各种以Ax开头的控件类及与之相关的事件类
ESRI.ArcGIS.Controls 程序集下的类,就是我们常的各种类。
事实上,在.NET Framework组件中,AxMapControl与 MapControl是指向同一东西的!如下图:
总结完成