2009-10-21 11 views
7

私の理解では、.NETは実際にはDLLの設定ファイルを「作成」しません。メインの実行可能ファイルまたはWeb Appのみが設定ファイルを取得し、実行可能ファイル/ Web Appによって参照されるすべてのDLLが読み込まれます。.NETのDLL設定とWeb参照がある場合の設定 - 何が起こっていますか?

VS2008では、クラスライブラリ(DLL)プロジェクトにWeb参照を追加すると、Settings.Settingsファイルとapp.configファイルがプロジェクトに追加されます。それらにはWeb参照のメインURLが含まれています。

これらのファイルはどのようなものですか? DLLが無制限に読み込む方法はありませんか?

編集:app.configとSettings.Settingsの内容は違います:たとえば、DLLプロジェクトのapp.configファイル内のWeb参照URLを変更しても違いはありませんapp.configのURLを編集してからSettings.Settingsファイルを開くと、app.configで行った変更がSettings.Settingsにコピーされます。そして、DLLは実行時に新しい値を取得します。これはどうしていますか?

編集:Settings.Settingsとapp.configの違いについてあまり明確ではないし、それらがお互いにどのように関係しているのかも分かりません。

答えて

6

は、DLLがそれらを読み取るための方法はありませんが、彼らは、彼らが実際の設定に含めるかもしれないもののあなたのDLL/configファイルの消費者に強いヒントをしている

編集

OPによってコメントに応答して - 設定で最後に編集されたものは、実行時に正しい名前の設定が存在しない場合のデフォルトとしてコードにコンパイルされます。だからこそ、それが働いているのです。

+0

変更はSettings.Settingsファイルにコピーして、そのように実行時に拾っ得るように見えるますショーだけではありません。上記の私の編集を参照してください – codeulike

+0

ああ、ありがとう。私はapp.configがSettings.Settingsに関係するようにあなたの編集が役立つようにあまりにも明確ではありませんでした。 – codeulike

6

Visual Studioはどこかにこのようなものを追加する必要があり、それはあなたがそれを置くしたいアプリケーションを知らないあなたは以下のようにして、DLLのための設定にアクセスすることができます。

var config = ConfigurationManager.OpenExeConfiguration("MyDll.dll.config"); 

だけの時間を私は、このプラグインをサードパーティのアプリケーションのDLLとして書いて、自分のDLLを構成可能にしたいと思ったときに便利です(ほとんどの人が頻繁に私が疑うことではありません)。

通常、必要な設定部分をapp.configまたはweb.configに移動します。

- あなたのアップデートに関しては意味があります。 Settings.settingsアプリケーションスコープ設定は、アプリケーションのapp.configファイルから取得します。アプリケーションスコープ設定の場合、これらの設定を表す厳密に型指定されたクラスです。

+0

DLLはSettings.Settingsファイルを持ち、実行時にそれらを読み取ることができますか?これらのファイルの内容はビルド後どこで終了しますか? – codeulike

+0

いいえ、Settings.Settingsファイルを持つDLLはapp.config/web.configからDLLを読み取ります。それが見つからない場合は、デフォルトに戻ります。 – RichardOD

+0

私はあなたがapp.configという用語を使用するのを混乱させていると思います。メインアプリケーションの構成ファイル(MyApp.exe.configまたはWeb.config)を意味します。私にとってDLLの設定は本当にMyDll.dll.configです。 HTH – RichardOD

-2

DLLの設定ファイルから読み込む可能性があります。 DLLプロジェクトにapp.configファイルを追加して、DLL内から構成設定を確実に読み取るようにしてください。展開すると、設定ファイルの名前が "MyDLL.dll.config"(DLLの名前が "MyDLL.dll"であることが前提)で、DLLと同じフォルダに存在する必要があります。

次のコードは、私のDLLから私たconnectionStringを返す必要があります:app.configをへ

return ConfigurationManager.AppSettings["ConnectionString"];

+4

これは動作しません。 – RichardOD

+0

また、それは私が求めているものではありません。 DLLを使って設定ファイルを作成する方法を尋ねるのではなく、Visual StudioがDLLプロジェクト用に設定ファイルを追加するのを邪魔している理由を尋ねています。 – codeulike

+0

.NET 4.6でテストされ、これが動作しないことが確認されました。 – EM0

関連する問題