Ich verwende mehrere ESRI .NET-DLLs in einigen benutzerdefinierten Python-Skripten. Zum Beispiel ESRI.ArcGIS.Geodatabase.dll
Auf meinem Entwicklungscomputer befinden sich diese DLLs im Ordner C: \ Programme (x86) \ ArcGIS \ DeveloperKit10.0 \ DotNet .
Jetzt möchte ich die Skripte auf einem anderen Computer bereitstellen. Sofern der Benutzer das ArcObjects SDK für .NET nicht installiert hat, fehlen diese DLLs auf seinem Computer.
Schlimmer noch, wenn der Benutzer das SDK installieren muss, muss er auch Visual Studio installieren, bei dem es sich um einen 600-MB-Download handelt (für die kostenlose Express-Version). Wenn sie kein Visual Studio haben, wird das ESRI-Installationsprogramm nicht fortgesetzt.
Sollten diese DLLs also mit den Skripten gebündelt werden (was zu Kompatibilitätsproblemen führen kann, wenn Service Packs hinzugefügt werden), oder gibt es eine einfachere Bereitstellungsmethode?
Update :
Die .NET-DLLs werden jetzt standardmäßig in Version 10 von ArcGIS installiert. Sie werden im GAC (Global Assembly Cache) abgelegt. Sie können sie im Windows Explorer (in Windows 7) in C:\Windows\assembly
(nicht wirklich ein Ordner, aber Sie können anzeigen, was sich im GAC befindet) sehen. Ein Blick auf die Assembly-Eigenschaften zeigt an, dass sich die DLL in einem Ordner wie dem befinden sollte, C:\Windows\assembly\GAC_32\ESRI.ArcGIS.System\10.0.0.0__8fc3cc631e44ad86\ESRI.ArcGIS.System.dll
aber diese Datei scheint nicht zu existieren.
Python für .NET erfordert anscheinend, dass Sie den vollständigen Namen verwenden, wenn Sie einen Verweis auf diese DLLs hinzufügen. Wenn Sie sich den Quellcode ansehen, sieht es so aus, als hätte er zuvor LoadWithPartialName verwendet, bevor Sie den folgenden Code verwenden können. Dies gibt jetzt eine FileNotFound-Ausnahme zurück.
import clr
clr.AddReference("ESRI.ArcGIS.System")
from ESRI.ArcGIS.System import *
Nun müssen Sie anscheinend Folgendes verwenden:
import clr
clr.AddReference("ESRI.ArcGIS.System, Version=10.0.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86")
from ESRI.ArcGIS.System import *
quelle
In 9.x können Sie ArcGIS mit .NET-Unterstützung installieren, wobei IIRC die .NET-PIAs enthält.
In 10.0 müssen Sie jedoch das SDK installieren: http://support.esri.com/de/knowledgebase/techarticles/detail/34178- Siehe @ Petrs Antwort : Die .NET-PIAs werden bei der Installation von ArcGIS Desktop 10 im GAC installiert .Laut dieser Seite ist Visual Studio nicht erforderlich , um das ArcObjects 10 SDK zu installieren. Dies ist jedoch NICHT korrekt, da das Installationsprogramm die Fortsetzung ohne die Unterstützung einer unterstützten VS IDE verweigert.
Wenn Sie comtypes verwenden, können Sie die COM-OLBs anstelle der .NET-PIAs verwenden. Natürlich müssten Sie immer noch comtypes installieren oder mit Ihrem Skript bereitstellen (nicht sicher, wie, aber ich denke, dass dies möglich ist), aber es würde die Abhängigkeit von .NET-Assemblys beseitigen.
Siehe auch verwandte Fragen:
quelle
Sie können die DLLs nicht bündeln, da dies gegen Ihre Lizenzvereinbarung verstößt und sie in letzter Zeit sehr scharf darauf sind. Sie müssen entweder AGS 10 .NET oder ArcObjects 10 .NET SDK und natürlich Visual Studio installieren.
Wir hatten gerade unsere eigenen Probleme mit dem gleichen Problem. Wir hatten eine .NET-Toolbox auf einem AGS 10-Java-Server bereitgestellt, wobei die DLLs eingepackt waren. Wir haben einen Leckerbissen gemacht, bis uns mitgeteilt wurde, dass er gegen unsere Lizenzvereinbarung verstößt und wir die anderen Komponenten kaufen oder uns den Konsequenzen stellen müssen.
Es stinkt irgendwie, aber hey ho. Bedeutet 2 AGS 10 Lizenzen für sie, also jemand glücklich ...
quelle
Warum nicht die ArcGIS Engine Runtime verwenden ? Dies ist die Laufzeit für eigenständige ArcGIS / ArcObjects-Anwendungen. Wenn Sie in Ihren Skripten keine Desktop-Benutzeroberfläche verwenden, sollte dies funktionieren?
quelle