7

サードパーティ アプリケーションと相互運用するアプリケーションを作成しています。このアプリケーションは、DLL のメソッドを介して開発者に API を公開します。少し前に、このアプリのベンダーは独自の .NET コンポーネントをプログラムに統合し始めました。その際、コンポーネントは を使用しConfigurationManagerて実行時に設定を取得する必要があると判断しました。

これが意味すること: 彼らのプログラム はfoo.exeを呼び出しfooengine.dll、 から設定を読み取りますfoo.exe.config。私のプログラムbar.exeも を呼び出しfooengine.dll、 から設定を読み取りますbar.exe.config

まあ、それは単純に間違っています。しかし、どうすれば修正できますか?

foo.exe.config簡単な回避策は、の設定を に複製することbar.exe.configです。それはうまくいきますが、それはばかげています。これは、管理上の観点から、特定の設定を N 個の異なるファイルで維持する必要があることを意味します。それは遅かれ早かれ失敗するでしょう。

構成ファイルconfigSourceのセクションに属性を入れてみました。appSettings(たまたま、私はapplicationSettingsセクションを自分の設定に使用しており、彼らはappSettingsセクションを彼らの設定に使用しているので、別のファイルからそのセクションを取得するだけで十分です。ConfigurationManager)のパスは、プログラムのディレクトリconfigSourceに対して相対的であるだけでなく、その下にもあります。

設定ファイルを物理的に読み取り、自分で設定できますXmlDocument。しかし今、私は自分のコードをそれらの実装に密接に結び付けています。applicationSettings彼らが設定をセクションに移動する新しいリリースを出すと(2009年になったので、今はそうあるべきです)、私のコードは壊れます。

これから抜け出す別の方法はありますか?

4

2 に答える 2

3

さて、少なくともこの問題の特定のバージョンについては、答えを見つけたと思います。

.NET 2.0は、要素の属性をConfigurationManagerサポートしています。これにより、その要素の内容を外部ファイルから取得できます。だから私がすることは次のとおりです。fileappSettings

  1. appSettings要素を切り取り、foo.exe.configそのディレクトリ内の別のファイルに貼り付けますappSettings.xml

  2. foo.exe.config新しい要素を: に追加します<appSettings file="appSettings.xml"/>

  3. に要素を追加bar.exe.config: <appSettings file="c:\program files\foo\appSettings.xml"/>

これは機能します。しかし、私のプログラムがまったく使用しないためにのみ機能appSettingsします。

于 2009-07-28T21:37:29.747 に答える
2

構成ファイルをロードするだけです。

于 2009-07-28T19:38:20.983 に答える