Please activate JavaScript!
Please install Adobe Flash Player, click here for download

arcAKTUELL 1.2012 - Teilen und mitteilen - Karten in der Kommunikation

Prägnante Schleifen Für das Durchlaufen von Mengen – egal ob Sets oder Cursor – sieht man immer wieder Code-Konstrukte ähnlich diesem hier: Erfahrungsgemäß wird die abschließende Neuzuweisung im Block gerne einmal vergessen. Darüber hinaus hinterlässt die doppelte Ver- wendung von NextFeature() einen Code-Smell. Mittels eines Refacto- rings lässt sich dies zum deutlich eleganteren Code transformieren: Dass ich im Vergleich die Konstante null nach vorne ziehe, hat ganz pragmatische Gründe. Zum einen wird die Natur des Vergleichs stär- ker in den Fokus gerückt und zum anderen ist diese Syntax weniger fehleranfällig in anderen Sprachen. (Eine versehentliche Zuweisung anstatt eines Vergleichs wird so herum vom Compiler moniert.) Kompilierung gegen verschiedene ArcObjects Versionen Im Zusammenhang mit der ab ArcGIS 10 angestrebten Side-by-side- Installation von verschiedenen ArcGIS Produkten ergeben sich eini- ge grundlegende Änderungen im Umgang mit ArcObjects Bibliothe- ken. Durch den Entfall der bis ArcGIS 9.3.1 automatisch installierten Policy-Files muss der Programmierer zukünftig stärker dafür Sorge tragen, dass seine Entwicklungen kompatibel zu den verschiedenen Versionen sind. Dazu müssen die eigenen Programme ggf. gegen mehrere Versionen der ArcObjects Bibliotheken kompiliert werden, da kein automatisches „Hochstufen“ durch die obsoleten Policy-Files erfolgt. Management mit NuGet Ein Ansatz, um die Kompilierung gegen verschie- dene Versionen der ArcObjects Bibliotheken zu ermöglichen, ist die Verwendung von NuGet. In arcAKTUELL 3/2011 findet sich ein Artikel,1 der dies beschreibt. NuGet kann seine Stärke insbesondere im Kon- text des Updatings auf neue Bibliotheksversionen ausspielen. Damit lässt sich ein einfacher Workflow zum Kompilieren gegen verschie- dene Bibliotheksversionen aufbauen. Management mit Umgebungsvariablen Möchte man aber leichtgewichtig zwischen verschiedenen Versionen der ArcObjects Bibliotheken hin- und herspringen können, bietet sich ein anderer Weg an. Dieser nutzt eine eigene Umgebungsvaria- ble namens ArcGISVersion, um gegen mehrere verschiedene Biblio- theksversionen kompilieren zu können. > Aufbau des DevTree Dazu legt man als Erstes einmal die aktuellen ArcObjects Bibliothe- ken der hautpsächlich verwendeten bzw. aktuellen Version in einen eigenen Bibliotheksordner im Projekt. Damit gleicht dieser Schritt dem NuGet-Ansatz und trägt dem „Self-contained build“-Prinzip Rechnung, alle benötigten Entwickler-Artefakte unter einem gemein- samen (Projekt-)Wurzelpunkt im DevTree vorzuhalten. Unterhalb die- ses Ordners werden die versionsverschiedenen ArcObjects Biblio- theken in eigene Ordner (z.B. 9.3, 10.0, …) aufgenommen. Dass dabei die Inhalte des o.g. Ordners doppelt vorhanden sind, nehmen wir zugunsten eines einfachen Prozess in Kauf. > Verwendung der Bibliotheken Wie im NuGet-Ansatz auch, kommt es nun darauf an, die eige- nen Projekte gegen die lokal im DevTree vorhandenen Bibliothe- ken zu referenzieren. Dies geht nur unter Verzicht der „Add ArcGIS Reference“-Wizards mit weiterem manuellem Eingriff. Nach dem Referenzieren muss die csproj-Datei des jeweiligen Projekts editiert und in jede Referenz die helfende Umgebungsvariable eingefügt werden. Aus dem ursprünglichen HintPath zur Esri.ArcGIS.Carto.dll wird somit ein Der Trick hierbei ist, dass ohne Setzen von ArcGISVersion ein Leer- string vorliegt und daher der Pfad zum aktuellen Satz der Bibliothe- ken aufgelöst wird. Dies ist der Fall, wenn der Entwickler „ganz nor- mal“ arbeitet. Für alternative Kompilate kann allerdings durch Setzen von ArcGIS Version die Verwendung von Bibliotheken im entsprechenden Unter- ordner erzwungen werden (z.B. ArcGISVersion=“9.3\“). Äußerst praktisch ist dieser Ansatz bei Automatisierungen (Final- Builder, NAnt, PowerShell) und in Continuous-Integration-Prozessen. 1/2012 arcAKTUELL 47 Produktive Kniffe Für Entwickler

Seitenübersicht