ArcEngine9.1结合VS2005开发技巧2则
尽管ArcGIS9.2中文版都已经发不了,但是对于学生来说用那个版本到时没多大区别。身边还是有不少朋友再用AE9.1,原来用的时候还不写博客,今天正好有同事碰到问题讨论,想起了自己以前遇到的问题,就这里总结一下。
1.让AE9.1和VS2005一起工作
AE9.1带的针对.net框架的Interop 程序集安装包是为vs2003+.net1.1量身定做的,当时.net2.0还没有出来。
关于Interop 程序集是什么的详细信息,请查询《向 .NET Framework 公开 COM 组件》,MSDN地址是:ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_fxinterop/html/e78b14f1-e487-43cd-9c6d-1a07483f1730.htm
为了让AE9.1和2005一块工作,需要:
首先,安装.Net1.1 Framework
然后,安装AE9.1 DevKit。
这样才可以在ToolBox中正确添加控件,注意是从.net面板添加,而不是COM面板。还要注意的是控件是以ax开头的(如axMapControl),一般排在开头。命名空间是形如ESRI.ArcGIS.xxxx。
如果没有装1.1框架,也是可以用,但是用的深入的话可能有一些问题,以前遇到过,具体什么问题倒是给忘记了。只是记得需要从COM面板添加,命名空间是如esriMapControl之类的。
2.解决类似"类型同时存在于ESRI.ArcGIS.AxMapControl.dll和ESRI.ArcGIS.MapControl.dll中"的错误
解决问题的要点是其中一个命名空间要取别名代替。取别名的方法如下,记得还得修改引用中程序集dll的别名,如图。
extern alias toc;
extern alias map;
using map.ArcGIS.MapControl;
using toc.ESRI.ArcGIS.TOCControl;
错误信息大概如下:
类型"ESRI.ArcGIS.MapControl.IMapControlEvents2_OnMouseDownEventHandler"同时存在于"d:\Program Files\ArcGIS\DotNet\ESRI.ArcGIS.AxMapControl.dll"和"d:\Program Files\ArcGIS\DotNet\ESRI.ArcGIS.MapControl.dll"中 C:\Documents and Settings\jackey_young\桌面\test\ttt\ttt\Form1.Designer.cs
类型"ESRI.ArcGIS.MapControl.IMapControlEvents2_OnExtentUpdatedEventHandler"同时存在于"d:\Program Files\ArcGIS\DotNet\ESRI.ArcGIS.AxMapControl.dll"和"d:\Program Files\ArcGIS\DotNet\ESRI.ArcGIS.MapControl.dll"中 C:\Documents and Settings\jackey_young\桌面\test\ttt\ttt\Form1.Designer.cs