一部のカスタムPythonスクリプトでいくつかのESRI .NET DLLを使用しています。たとえば、ESRI.ArcGIS.Geodatabase.dll
私の開発マシンでは、これらのDLLはC:\ Program Files(x86)\ ArcGIS \ DeveloperKit10.0 \ DotNetフォルダーにあります。
次に、スクリプトを別のマシンに展開したいと思います。ただし、ユーザーがArcObjects SDK for .NETをインストールしていない限り、これらのDLLはマシンにありません。
さらに悪いことに、ユーザーにSDKのインストールを要求することは、600 MBのダウンロード(無料のExpressバージョンの場合)であるVisual Studioもインストールする必要があることを意味します。Visual Studioがない場合、ESRIインストーラーは続行できません。
これらのDLLをスクリプトにバンドルする必要がありますか(サービスパックを追加すると互換性の問題が発生する可能性があります)、それとも簡単な展開方法がありますか?
更新:
.NET DLLは、ArcGISバージョン10にデフォルトでインストールされるようになりました。それらはGAC(グローバルアセンブリキャッシュ)に配置されます。Windowsエクスプローラー(Windows 7)ではC:\Windows\assembly
(実際にはフォルダーではなく、GACの内容を表示できます)で確認できます。アセンブリプロパティを見ると、DLLは次のようなフォルダーにあるはずC:\Windows\assembly\GAC_32\ESRI.ArcGIS.System\10.0.0.0__8fc3cc631e44ad86\ESRI.ArcGIS.System.dll
ですが、このファイルは存在しないようです。
Python for .NETでは、これらのDLLへの参照を追加するときに完全な名前を使用する必要があるようです。ソースコードを見ると、以前にLoadWithPartialNameを使用していたように見えるため、以下のコードを使用できます。これでFileNotFound例外が返されるようになりました。
import clr
clr.AddReference("ESRI.ArcGIS.System")
from ESRI.ArcGIS.System import *
今、あなたは以下を使用する必要があるようです:
import clr
clr.AddReference("ESRI.ArcGIS.System, Version=10.0.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86")
from ESRI.ArcGIS.System import *