|
如果你用VS2005写AE程序,使用了TOCControl控件(其它可视化控件也一样),双击这个控件产生OnClick事件,然后直接编译,肯定会出现一个错误,说事件处理器同时存在两个DLL中冲突云云。解决方法在ESRI的论坛上看到,在GIS Empire上也看到了解决方法,特转载:
| Developer Scenario Building Application with windows controls using VS 2005 C# |
| Author |
Peter v |
| Date |
Jul 12, 2007 |
| Message |
I ran into a problem in using .net 2.0 / VS2005 for a provided solution with a tutorial, a so called developer scenario, found in \ArcGIS\DeveloperKit\Help\Java\ArcGISEngine\EngineDevGd_Ch6.pdf) part of the helpfiles of ArcGIS 9.1.
The project won't compile because a bunch of references seem to have conflicting names. Removing them works up to ESRI.ArcGIS.TOCControl and ESRI.ArcGIS.PageLayoutControl. Which use elements which is provided by them as well as their ActiveX equivalents, ESRI.ArcGIS.AxTOCControl and ESRI.ArcGIS.AxPageLayoutControl.
A solution we found after some searching was to use reference extern aliases. Provide an alias for the aliases property of ESRI.ArcGIS.TOCControl and ESRI.ArcGIS.PageLayoutControl, eg. Com. 【给有冲突的两个Assembly中的一个取个别名,如AxMapControl和MapControl就冲突,可以将MapControl的alias属性由global设置为COM等等,随便你取什么】
Add on top of the using directives "extern alias Com;" 【在使用该Assembly的类前标明如下语句extern alias COM】
Now you can fully qualify members of the reference by "Com::ESRI.ArcGIS.TOCControl." 【现在使用MapControl就是COM.ESRI.ARCGIS.TOCControl】
In addition you can also add the using directives
using Com.ESRI.ArcGIS.TOCControl;
using Com.ESRI.ArcGIS.PageLayoutControl;
Then you do not need to change the code at all, and the solution compiles magically. I only wonder how the compiler solves the naming conflict... Hope the solution can be of help. |
再 (本文已被浏览 次) | | |