代码改变世界

ArcGIS Engine升级记录,从9.3到10.0

2011-04-20 22:33  贼寇在何方  阅读(2056)  评论(2编辑  收藏  举报

最近要做毕业设计,准备使用VS2010和ArcGIS10开发,之前做的系统还有一些利用价值,便花了点时间把原来的系统升级了下。

升级范围:
Visual Studio 2008 -> 2010
.Net framework 3.5 -> 4.0
ArcGIS Engine 9.3 -> 10

 

1. 升级项目
用VS2010打开项目,自动提示升级,按完成,以默认配置升级即可

 

2. 更改.Net 版本
Project->Properties,在Application选项卡中,把Target framework 改成.Net framework 4

 

3. 更新引用
把包含ESRI的引用全都删掉,重新添加,再追加一个ESRI.ArcGIS.Version,这是ArcGIS 10特有的

 

4. 更改代码适应C# 4
这是最繁琐的一步。C# 4对COM的调用发生了一些变化,所以许多代码需要改动。比如:

ILine line = newLineClass(); => ILine line = newLine();

 形如LineClass一类的XXXClass统统不能够用new创建实例,也不能够用来声明变量类型:

PolygonClass polygon = newPolygonClass(); =>
IGeometryCollection polygon = newPolygon() asIGeometryCollection;

一阵大改,折腾了我一个多小时,完了就可以编译通过了。

 

5. 添加RuntimeManager.Binding
在ArcGIS Engine的控件启动前,必须执行:

RuntimeManager.Bind(ProductCode.EngineOrDesktop);

找个地方加上,一般可以放到Program.cs里去。

 

6.  关于Embed Interop Type
这个玩意儿我还没有搞明白是什么东西,但对于SceneControl中的ISceneGraphEvents_Event,不关掉就会产生异常“

event invocation for COM objects requires event to be attributed with DispIdAttribute
把它所在的引用ESRI.ArcGIS.3DAnalyst的Embed Interop Type属性改成False,接着就OK了

 

看看效果,