VS2005+Arcengine9.3系统(程序)移至VS2010+Arcengine10.1继续开发

来源:互联网 发布:尖峰软件 编辑:程序博客网 时间:2024/06/10 23:01

针对已经安装配置好了开发环境的情况,对于多个项目的解决方案,打开进行重新生成会出现很多错误。

比如:

1,“错误1 命名空间“ESRI.ArcGIS”中不存在类型或命名空间名称“DataSourcesRaster”。是否缺少程序集引用?”;

2,“错误3      命名空间“ESRI.ArcGIS”中不存在类型或命名空间名称“MapControl”。是否缺少程序集引用?”

3,“错误21 未能加载引用的程序集“*.dll”。捕获到一个FileNotFoundException,其内容为“未能加载文件或程序集“*.dll”或它的某一个依赖项。系统找不到指定的文件。”。         4,“错误10    未能找到类型或命名空间名称“IMapControl3”(是否缺少 using 指令或程序集引用?)     ”

。。。。。等等一系列问题

解决方案如下:

1,在solution的主函数(Program.cs里面),在“Application.SetCompatibleTextRenderingDefault(false);

”后添加“ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engine);”(注:要紧接其后,在其他应用开始之前);

2,在前面添加完这个前面代码整合的函数之后,仍然会报错,需要在项目中填加引用“ESRI.ArcGIS.Version”。(需要在solution下面的所有项目添加这个引用);

//前面两个步骤的作用是为了能够把前面的代码整合到现在的编译环境下

/////////////////////////////////////////////////////////////////////////////////////

3,分别对solution下的每个项目进行生成,这样就可以减少错误输出的数量,不会让人觉得手足无措;

4,针对前面出现的各种问题,比如第一个问题,那就是项目下的引用出错了,重新添加相应的引用就行了;

5,针对前面第2、4个问题,那是由于ArcGIS的版本升级之后,存在部分类库的弃用和升级,需要查看相关文档,比如“AxMaControl /Ax…”等都整合到了“ESRI.ArcGIS.AxControls”中,“MapControl/…Control”很多整合到了“ESRI.ArcGIS.Controls”中;这两种情况是可以去除前面的相关引用,重新添加前面的两个Control引用,然后头文件中填上“using ESRI.ArcGIS.Controls;”。前面的相关问题就会解决了,如果还存在一些小问题那可能就是表达上的错误了,比如“AxMapControl”是用“axMapControl”写的等。

6,针对第3个问题,主要是因为添加了外部引用,但是VS无法获取权限访问,所以只需要把VS启动和应用程序设置成“以管理员权限启动即可”。

其他注意事项:

1,如果添加了相关引用之后,引用仍然报错,那么请你查看引用属性,是否把“复制本地”和“特定版本”设置成了false。因为VS2010默认是true。

2,所有编译通过的之后,调试的时候可能出现:“无法加载DLL “ArcGISVersion.dll”:找不到指定的模块。异常来自 HRESUL:0x8007007E”。请不要惊慌,请查看每个项目的“属性—生成—目标平台”是否都改为了“X86”,修改这个之后,这个错误一般就解决了。

3,打开运行调试之后,有时会出现“ArcGIS version not Specified. You must RuntimeManager.Bind beforecreating any ArcGIS compnents”.请不要焦虑,问题出在

“ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);”把原来的那个参数“Engine”换成“EngineOrDesktop”即可。

0 0
原创粉丝点击