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 *