在10.2上运行ArcGIS 10.1应用程序


10

我支持已在装有ArcGIS 10.1的PC上编译的.NET应用程序。该应用程序包括一个用户界面和一个ArcGIS桌面扩展,以及一个Windows Installer调用的安装程序程序集,用于在安装过程中注册该桌面扩展。

我的问题是该应用程序无法在装有ArcGIS 10.2的PC上运行,因为未找到10.1 ESRI程序集,因此它崩溃了。从v9.3 ESRI开始,似乎不再提供发布者策略文件,从而在运行时将程序重定向到最新版本。

通过将运行时程序集绑定添加到应用程序的.exe.config中,我设法重定向了程序以加载10.2程序集。但是,这不会重定向桌面扩展,也不会解决安装程序在安装应用程序时寻找10.1库的问题。

ESRI的解决方案似乎是每次发布新版本的ArcGIS时都重新编译应用程序。但是,这意味着我将需要拥有最终用户使用的每个ArcGIS版本的副本。每次需要更改应用程序代码以重新编译时,我都必须卸载并重新安装不同的版本。

有没有人有什么建议?是否可以在运行时动态加载库以避免寻找特定版本?还有其他解决方案吗?

Answers:


2

在项目中设置ArcGIS引用以使用以下属性:

Copy Local = False
Specific Version = False

在大多数情况下,这将使您的程序向前兼容,前提是您不使用任何已弃用或有重大更改的arcobject。


我已经在Visual Studio中具有这些设置。“特定版本= False”仅影响Visual Studio加载引用的方式,不会影响构建和部署应用程序的时间。
安迪

2

最好将项目体系结构更改为ESRI加载项。这样,如果我正确理解您的体系结构正在处理Windows注册表,则可以避免使用Windows Installer。

加载项更加简单明了,不需要Windows特定的安装程序,它们只是作为特殊的.zip文件(即.esriAddIn文件类型)提供的,这是ESRI推荐的。这些不处理Windows注册表,仅处理ESRI,只需单击一下文件即可安装。他们应该更好地执行Rich Wawrzonek建议的更改。

另外,ESRI已声明(请参见此处的演示文稿)在主要版本中,即10.x加载项向后兼容,即10.2可以使用10.1和10.0加载项,10.1可以使用10.0加载项。需要注意的是,您应该知道在转换时是否已在ArcObjects中删除或更改了内容。

例如,对于以下接口,OnContextMenu方法的方法签名已在10.2中更改:

  • IDocumentEvents
  • IGxDocumentEvents
  • IGMxDocumentEvents
  • ISxDocumentEvents

就删除而言,在10.2中唯一的删除是

  • MaplexUI
    • MaplexExtension
    • MaplexExtensionClass

其余的更改都添加了功能。

要在下面的评论中回答您的问题,是的,这应该保证您不必为不同版本的Arc进行编译(只要保持在10.x中即可)。当他们转向11时,情况可能会有所不同。至于支持MapInfo,我对此并不熟悉。


感谢您的建议,但我有两个想法:1.是否可以解决DLL版本的问题,还是仍然需要针对每个ArcGIS版本重新编译插件?问题不在于安装程序或注册表,而是ESRI不再为发布者策略文件提供新版本。2.我的应用程序不仅适用于ArcGIS,还适用于MapInfo。因此,该应用程序的大部分是一个独立的界面,只有一小部分代码与ArcGIS或MapInfo有关。
2014年

安迪(Andy)看到了我的回答的补充内容,以解决您的问题。
GeoSharp 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.