ESRI ArcMapアドインConfig.esriaddinx


8

古いArcMapエクステンションをC#のアドインに変換している最中で、XMLベースの構成を最大限に活用しようとしています。

Config.esriaddinxは、基本的なセットアップ(ツールバー、ボタン、拡張情報など)に最適ですが、フィールド名、レイヤー名、データベース接続など、他の構成パラメーターを追加する方法はありますか?

App.configファイルを作成する必要がありますか?その場合、App.configファイルは他のアドインと同じようにパッケージ化/展開されますか?パラメータを読み取るための最良の方法は何ですか?私はアドインの初心者であり、提案やサンプルをいただければ幸いです。ありがとう!

回答:


4

まず、この目的でConfig.esriaddinxを使用したことはありませんが、お勧めしません。これは、アドイン自体の構成を意図したものであり、必ずしもユーザーデータである必要はなく、おそらく2つを混在させる必要はありません。

私がこれを自分で扱ってからしばらく経っていますので、詳細については少しあいまいかもしれませんが、ArcGISアドインでの構成ファイルの使用には複数の問題があります:appを認識しないapp.settingsを持つArcMapアドイン.configの変更?

特に、アドインが抽出されるディレクトリは、アプリケーションが起動されるたびに上書きされるため、設定の変更を実際に維持することはできません。設定が変更されないか、アドインの新しいバージョンごとにのみ変更される場合、これはおそらく問題ではありません。

ただし、エンドユーザーがアドインを構成できるようにしたい場合は、ユーザーが構成できる情報を他の場所に保存して、上書きされないようにする必要があります。ユーザーのApplication Dataフォルダーを使用することをお勧めします。そのパスは、プログラムで次のように決定できます。

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

また、アドインにちなんで名付けられたサブフォルダーに置くことをお勧めします。ただし、基本的には、アドインのSettingsクラスまたはアドインのディレクトリにある構成ファイルから設定を読み取る代わりに、その場所のファイルを読み込んで保存します。これに.NET構成を使用する場合は、アプリケーション設定とを参照することをお勧めしますConfigurationManager

もう1つの問題は、.NET構成を使用するときにカスタム構成セクションを使用することです。イベントの使用Assembly.LoadFromと処理AssemblyResolveは、その特定の問題の解決策でしたが、その場合、その理由やその他の理由で.NET構成を使用しなくなりました。

構成シナリオの複雑さによっては、私がしたように、.NET構成システムを完全に使用せずに、構成情報の読み取りと書き込みの他の方法を使用することができます。SerializableAttributeマークされたクラスまたはIXmlSerializableこの目的のために実装したクラスを使用して、レイヤーのリストや接続設定などのユーザー構成可能な設定を含む、作成したより複雑なアドインの1つを作成しました。オブジェクトのシリアル化をで読むことをお勧めします。 NETXML シリアル化の紹介、およびIXmlSerializableの実装方法アプローチに興味がある場合は、正しく

あなたのものは同じ線に沿っているように聞こえるので、あなた次第ですが、XMLシリアル化アプローチは、最も単純な構成シナリオ(単純なデータ型、階層/コレクションなし)以外のすべての.NET構成よりも好ましいことがわかりました。


ここで素晴らしい情報、@ blah238!これらのオプションを調べて、何が最もうまくいくかを見ていきます。
petegis 2013

ユーザーにアドインファイルを配布するときに、xmlファイルをEnvironment.SpecialFolder.ApplicationDataフォルダーにどのように展開しますか?ファイルを手動でコピー/貼り付けする場合ですか?
ビダール2014

1

config.xmlファイルを作成し、そのファイルのVSプロパティの下で、ビルドアクションをAddInContentに設定します。

コメントに基づいてこれに追加するには、C#で行うので、Visual Studioを使用してアドインを作成していると想定していました。そこから、file newオプションからXML構成ファイルを追加し、config.xmlという名前を付けると、デフォルトの空のファイルが作成されます。そこから、通常のxml構成ファイルと同じようにappSettingsタグの下にキー値xml設定を指定し、通常どおりコードからこれらを参照できます。ビルドアクションを変更するには、VSでファイルを選択しているときに、プロパティウィンドウを確認すると、ビルドアクションの設定があるはずです。これを選択すると、使用可能なオプションのドロップダウンが表示されます。リストからAddInContentを選択します。


1
GISseへようこそ。これは非常に短い答えです。このファイルに特定のパラメーターを追加する方法など、@ petegisが言及した詳細の一部を組み込んで、さらに詳細を含めると役立ちます。また、このファイルをどのように作成しますか?ArcMapを介して行われますか、それともテキストエディタを使用しますか?適切な構造は何ですか?これまでに作成したことがない場合は、作成するために何を知っておく必要がありますか。その種の情報はすばらしい答えになるでしょう。よいスタート!
2013

@davetimminsに感謝します。単純明快なようですが、私はこれを試してみましたが、ファイルが実際に「config.xml」という名前でない限り機能します(「そのファイルがすでに存在する場合、ファイルを作成できません」というビルドエラーがスローされます)。
petegis 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.