4


0

クラスライブラリから構成ファイルを含める

私は、C#クラスライブラリにMyLibrary.configという名前の構成ファイルをvs 2008に持っています。

別のプロジェクト(単純なコンソールアプリなど)を作成し、クラスライブラリプロジェクトのbinディレクトリにMyLibrary.dllを参照して参照を追加します。コンパイルすると、MyLibrary.configは出力のbinディレクトリに含まれません。コンソールアプリで。

dllを参照するときに含めることができるように設定するにはどうすればよいですか?

乾杯

3 Answer


5


できません。 コンソールアプリケーションは、コンソールアプリケーションと同じ名前のプレフィックスを持つ設定ファイルを見つけることを期待しています( MyConsoleApplication.exe→` MyConsoleApplication.exe.config`)。

状況によっては、http://msdn.microsoft.com/en-us/library/ms228154.aspx [appSettings`要素]の file`属性を使用して設定ファイルを共有できます。


「パス」は実行中のアセンブリに関連していることに注意してください。

副次的な注意事項として、DLLはプロジェクトで定義した構成ファイルも使用しません。 繰り返しますが、構成情報は、実行中のアセンブリと同じプレフィックスを持つ構成ファイルから読み取られます。 したがって、「MyLibrary.dll」が設定ファイルから設定情報をヤンクしようとしても、「MyLibrary.dll.config」ではなく、実行中のアセンブリの設定ファイルを読み取ります。

構成ファイルの機能の詳細については、http://msdn.microsoft.com/en-us/library/1xtk877y.aspx [MSDN]を参照してください。


2


構成ファイルを使用する標準的な方法は、実行可能ファイルと同じにすることです。dllへの参照を追加すると、その構成ファイルは含まれません。それらを参照する実行可能ファイル。


0


これを行うことができないことに加えて、私はこのアプローチに対しても助言します。

DLLライブラリに設定を緊密に結合しようとするのではなく、「依存性注入」タイプのアプローチを検討してください。 値の依存関係(つまり、 設定)を呼び出しているコード(つまり、 図書館)。

これの利点は、設定を保存する単一の方法に縛られないことです。 その後、データベース、異なる構成ファイル形式を使用できます…​ ハードコーディングも。 また、外部ファイルの依存関係を削除することにより、単体テストを簡単にします。

これを実装するにはさまざまな方法がありますが、1つの例は、構成設定を使用するクラスのコンストラクターに構成設定を渡すことです。