2011-12-09 9 views
1

通常のProperties.Settings.blablaプロパティを使用して、app.configファイルからいくつかの設定を読み込むコマンドラインアプリケーションがあります。exeがdllとして使用されているときにapp.configファイルにアクセスできますか?

このアプリケーションはdllとしても使用されます。

私がdllとして使用すると、ディレクトリにドロップしたfoo.exe.configは無視されます。私は設定ファイルにアクセスするメソッドを使用するときには期待通りに例外をスローしませんが、設定ファイルも取りません。

dllとして使用されているexeを独自の設定ファイルを使用する方法がありますか?exeファイルを使用するとapp.configファイルを使用しますか?私はコンシューマーコードを変更したくないので、できるだけエクセルコードに影響を与えたくありません。

ConfigurationManager.OpenMappedExeConfigurationメソッドを使用して解決策を見たか、OpenExeConfigurationは、これらのメソッドをexeコード内で使用しているソリューションですか?そうすれば、dllまたはexeとして使用されているかどうかにかかわらず、常に設定ファイルが検索されます。

答えて

1

これを行うには、そのファイルから具体的に読む必要があります。 .NET実行可能ファイルは、それ自身のapp.configファイルから読み取ります。ライブラリコード常には、実行中のアプリケーションのファイルapp.configから読み込みます。ちょうど.exe拡張子のファイルにコンパイルされたライブラリコードでさえも。強調/明確化 ため

編集私はapp.config話すとき、私は適切に改名[program.exe.config]ファイルの話はもちろんです。

+0

私が使用している.dllは現在、たとえばconfigs.configという名前の設定ファイルの名前を呼び出していますが、System.Configuration.ConfigurationSettingsなどから継承するWorkerAgentクラスを作成しています。実行時の.dll /コンソールアプリケーション名と同じ名前は、app.configを参照しません。 – MethodMan

+0

例を使用して明確にすることにしましょう。 myappというアプリケーションとmylibというライブラリがあるとします。 mylibはexe(これは実際には独自に実行できますが)はmyappによって参照されます。 mylibは通常のProperties.Settings.blablaを使って設定ファイルから読み込みます。 myappの実行中に、Properties.Settings.blablaを使用するmylibのメソッドが呼び出された場合は、どこから読み込まれますか? myapp.exe.configまたはmylib.exe.config ??あなたの答えから、私はそれがmyapp.exe.configのreadoであると仮定します。その設定がそこに存在しない場合はどうなりますか? – Juancentro

+0

@Juancentroあなたの前提は正しいです。この場合、 'myapp.exe'は現在実行中のプログラムなので、設定は' myapp.exe.config'から読み込まれます。したがって、設定の適切な設定が欠落していた場合、どうなるかわかりません。私は、欠落している設定に関連する例外、またはデフォルト値(ゼロとか、おそらく例外を引き起こす可能性のある 'null')の読み込みと、 –

関連する問題