Führen Sie die ArcGIS 10.1-Anwendung unter 10.2 aus


10

Ich unterstütze eine .NET-Anwendung, die auf einem PC mit installiertem ArcGIS 10.1 kompiliert wurde. Die Anwendung umfasst eine Benutzeroberfläche und eine ArcGIS-Desktop-Erweiterung sowie eine Installationsbaugruppe, die von Windows Installer aufgerufen wird, um die Desktop-Erweiterung während der Installation zu registrieren.

Das Problem, das ich habe, ist, dass die Anwendung auf einem PC mit ArcGIS 10.2 nicht ausgeführt werden kann, da die 10.1 ESRI-Assemblys nicht gefunden werden und daher abstürzen. Es scheint, dass ESRI seit Version 9.3 keine Publisher-Richtliniendateien mehr bereitstellt, um das Programm zur Laufzeit auf die neuesten Versionen umzuleiten.

Ich habe es geschafft, das Programm umzuleiten, um die 10.2-Assemblys zu laden, indem ich der .exe.config der Anwendung eine Laufzeitassembly-Bindung hinzugefügt habe. Dies leitet jedoch die Desktop-Erweiterung nicht um und löst das Problem nicht, wenn das Installationsprogramm bei der Installation der Anwendung nach den 10.1-Bibliotheken sucht.

Die Lösung von ESRI scheint darin zu bestehen, die Anwendung jedes Mal neu zu kompilieren, wenn eine neue Version von ArcGIS veröffentlicht wird. Dies bedeutet jedoch, dass ich eine Kopie jeder Version von ArcGIS benötigen würde, die die Endbenutzer verwenden. Und ich müsste jedes Mal, wenn ich den Anwendungscode ändern muss, um ihn neu zu kompilieren, verschiedene Versionen deinstallieren und neu installieren.

Hat jemand irgendwelche Vorschläge? Können die Bibliotheken zur Laufzeit dynamisch geladen werden, um nicht nach einer bestimmten Version zu suchen? Gibt es eine andere Lösung?

Antworten:


2

Stellen Sie die ArcGIS-Referenzen in Ihrem Projekt so ein, dass die folgenden Eigenschaften verwendet werden:

Copy Local = False
Specific Version = False

In den meisten Fällen wird Ihr Programm dadurch vorwärtskompatibel, vorausgesetzt, Sie verwenden keine Arcobjects, die veraltet sind oder wichtige Änderungen aufweisen.


Ich habe diese Einstellungen bereits in Visual Studio. 'Spezifische Version = Falsch' wirkt sich nur darauf aus, wie Visual Studio die Referenzen lädt, nicht jedoch, sobald eine Anwendung erstellt und bereitgestellt wurde.
Andy

2

Am besten ändern Sie Ihre Projektarchitektur in ein ESRI-Add-In. Auf diese Weise vermeiden Sie den Umgang mit dem Windows Installer, der, wenn ich Ihre Architektur richtig verstehe, mit der Windows-Registrierung umgeht.

Add-Ins sind viel einfacher, erfordern keine Windows-spezifischen Installationsprogramme, sondern werden nur als spezielle ZIP-Datei mit dem Dateityp .esriAddIn geliefert und von ESRI empfohlen. Diese befassen sich nicht mit der Windows-Registrierung, sondern nur mit ESRI und der Installation mit einem Klick auf die Datei. Sie sollten die von Rich Wawrzonek vorgeschlagenen Änderungen besser durchsetzen.

Zusätzlich hat ESRI angegeben ( siehe Präsentation hier ), dass in Hauptversionen, dh 10.x-Add-Ins, abwärtskompatibel sind, dh 10.2 10.1- und 10.0-Add-Ins verwenden kann, 10.1 10.0-Add-Ins verwenden kann. Mit der Einschränkung, dass Sie wissen sollten, ob beim Übergang Dinge in ArcObjects entfernt oder geändert wurden.

Beispielsweise wurde die Methodensignatur für die OnContextMenu-Methode in 10.2 für die folgenden Schnittstellen geändert:

  • IDocumentEvents
  • IGxDocumentEvents
  • IGMxDocumentEvents
  • ISxDocumentEvents

In Bezug auf Umzüge waren die einzigen Umzüge in 10.2 :

  • MaplexUI
    • MaplexExtension
    • MaplexExtensionClass

Der Rest der Änderungen wurde Funktionalität hinzugefügt.

Um Ihre Frage in den Kommentaren unten zu beantworten, sollte dies sicherstellen, dass Sie nicht für verschiedene Versionen von Arc kompilieren müssen (solange Sie in 10.x bleiben). Wenn sie auf 11 wechseln, kann dies eine andere Geschichte sein. Soweit ich MapInfo unterstütze, bin ich damit nicht vertraut.


Vielen Dank für den Vorschlag, aber ich habe zwei Gedanken: 1. Garantiert dies, um das Problem der DLL-Versionen zu umgehen, oder muss das Add-In für jede Version von ArcGIS noch neu kompiliert werden? Das Problem liegt nicht beim Installationsprogramm oder bei der Registrierung. Das Problem besteht darin, dass ESRI keine Publisher-Richtliniendateien mehr mit neuen Versionen bereitstellt. 2. Meine Anwendung ist nicht nur für ArcGIS, sondern funktioniert auch mit MapInfo. Der Großteil der Anwendung ist also eine eigenständige Schnittstelle, und nur ein kleiner Teil des Codes bezieht sich auf ArcGIS oder MapInfo.
Andy

Andy sieht die Ergänzungen zu meiner Antwort, um Ihre Bedenken auszuräumen.
GeoSharp
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.