ArcObject .NET DLLの配置


8

一部のカスタム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 *

回答:


3

ArcObjects DLLをデプロイする必要はまったくありません。これらはGACにインストールされます。これは、クラシック.NETアセンブリとArcObjects PIAの両方に当てはまります。


1
ArcGIS Desktop 10のインストール時にPIAはGACにインストールされますか?または、SDKをインストールするときだけですか?.NETアドインはそれらがないと機能しないので、デスクトップがインストールされているときに必要です。9.3での処理方法が原因で混乱しました。PIAを取得するには、「。NETサポート」を使用してインストールする必要がありました。
blah238

1
はい、10で、それらは常にArcGIS Desktopとともにインストールされます。インストール時に指定する必要はありません。
Petr Krebs

1
SDKは、同じアセンブリの追加セットを独自のディレクトリにインストールして、Visual Studioでより便利に参照できるようにします。ただし、実行時に、アプリケーションの.NET構成ファイル(ArcMap.exe.configなど)でこの動作を明示的にオーバーライドしない限り、コードは通常、GACがインストールしたアセンブリをロードします。
Petr Krebs

ペトルありがとう。Python for .Netのドキュメントを調べた後、GACのアセンブリはPythonにロードできるはずですが、まだアクセスできないようです。さらに調べて、理由がわかったら更新します。
geographika

4

9.xでは、IIRCに.NET PIAが含まれる.NETサポートを使用してArcGISをインストールできましたが、10.0ではSDKをインストールする必要があります。http//support.esri.com/en/knowledgebase/techarticles/detail/34178 - @Petrの回答を参照してください。ArcGISDesktop 10をインストールする、.NET PIAがGACにインストールされます

このページによると、ArcObjects 10 SDKをインストールするためにVisual Studioは必要ありませんが、サポートされているVS IDEがインストールされていないとインストーラーが続行を拒否するため、これは正しくありません。

comtypeを使用する場合は、.NET PIAの代わりにCOM OLBを使用できます。もちろん、comtypesをインストールするか、スクリプトで展開する必要があります(方法はわかりませんが、実行できると思います)が、.NETアセンブリの依存関係はなくなります。

関連する質問も参照してください。


そこには、ArcObjects SDKで開発するには、ArcGIS Desktop、ArcGIS Engine Runtime、またはArcGIS Serverが必要です。また、Microsoft .NET Framework 3.5 SP1がインストールされている必要があります。開発が完了した場合、私が推測するVSは必要ありませんが、それでもSDKを展開する必要があります
Hairy

.NETとPythonの組み合わせは完全に機能しているので、comtypesに移行するのは嫌です。残念ながら、VSがマシン上にない限り、SDKインストーラーは続行を拒否します。
geographika

@geographikaあなたはマシンにVSなしでSDKをインストールすることはできません。これに対処する方法は、SDKを購入した場合、「ダミー」アプリを作成してダミーアプリ内のDLLを移行し、それをサーバーにデプロイして登録することです。次に、それらをそのように利用します。
毛深い

確認しました。ArcGISのドキュメントには、特定のページでは必須ではないと記載されています。ただし、SDKインストーラーは、Visual Studio 2008 Express、またはVisual Studio 2010 premium / ult / test / professionalなしでは使用できません。
デクスター

3

ライセンス契約に違反しているため、DLLをバンドルすることはできません。また、DLLを最近非常に巧妙に使用しています。AGS 10 .NETまたはArcObjects 10 .NET SDK、そしてもちろんVisual Studioをインストールする必要があります。

まったく同じ問題について、私たち自身の問題がありました。.NETツールボックスをAGS 10 Javaサーバーに展開し、DLLをラップしました。私たちがライセンス契約に違反し、他のコンポーネントを購入するか、その結果に直面する必要があると言われるまで、ごちそうになりました。

それはちょっと臭いが、ほらほら。彼らにとって2つのAGS 10ライセンスを意味するので、誰かが幸せです...


答えてくれてありがとう。明確にするために、ユーザーは自分のコンピューターにライセンスされたArcGISデスクトップのコピーを持っていますが、SDKやVisual Studioは持っていません。使用されることのない600MBのVisual StudioをダウンロードせずにDLLをインストールするオプションはありませんか?
geographika

どうやらそうではない。最近変わったと思います。少しでも、dllを展開することは許可されていません。ビルドするアプリのインストールにDLLを含めることはできません
毛深い

ArcGISを実行するために必要なランタイムdll(bin / gac)のデプロイと、.netのカスタマイズを開発するために必要な相互運用アセンブリ(dotnet dir)のデプロイには違いがあります。この場合にデプロイできるものとデプロイできないものについては、Esriにお問い合わせください。
SeaJunk 2011

AO .NETアプリケーションを構築する場合は、関連するDLLを展開時にバンドルする必要があります。展開サーバーにArcObjects .NET SDKがない場合は、実行するために単に実行する必要があります。DLLをバンドルすることは、ライセンス条件に違反します。限目。私はこれを知っていて、実際に.NETサービスをJavaサービスに移行する必要があるため、ライセンスフレームワーク内で、ArcGIS 10 for Javaサーバーインスタンス上で実行できます
Hairy

@ヘアリー; DLLをコードにバンドル/デプロイする必要はありません。拡張機能を正しく構築すると、ESRIがインストールされたソフトウェアからGACがインストールされたDLLでコードが機能し、問題は発生しません。重要なのは、適切なライブラリのローカルビルドコピーではなく、web / app.configファイルでGACバージョンを参照するように、DLLを使用して適切に参照することです。
DEWright

0

ArcGIS Engine Runtimeを使用しないのはなぜですか?スタンドアロンのArcGIS / ArcObjectsアプリケーションのランタイムです。スクリプトでデスクトップUIのものを使用していない場合、それは機能するはずですか?


これもライセンス違反です。「サービス」タイプのアプリケーションでUIなしでDLLを使用している場合は、AGSサーバーのライセンスが必要です。以前、エンジンを使用してアプリケーションをデプロイすることについてESRIに問い合わせましたが、全体的なAPPはサービスだったため、エンジンではなくAGSのライセンスを取得する必要がありました。
DEWright
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.