8

私の理解では、.NETはDLLの構成ファイルを実際には「実行」しません。メインの実行可能ファイルまたはWebアプリのみが構成ファイルを取得し、実行可能/Webアプリによって参照されるすべてのDLLがそこから読み取られます。

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

では、これらのファイルは何のためにあるのでしょうか?DLLが支援なしでそれらを読み取る方法はありませんよね?

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

編集:ここでの私の混乱の一部は、Settings.Settingsとapp.configの違いと、それらが互いにどのように関連しているかについてあまり明確ではないためです。そのため、おそらく人々もその問題を解決することができます。

4

3 に答える 3

6

DLLがそれらを読み取る方法はありませんが、DLLの利用者にとって、実際の設定/構成ファイルに何を含めたいかについての強力なヒントになります。

編集

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

于 2009-10-21T08:56:21.883 に答える
6

Visual Studioはこのようなものをどこかに追加する必要があり、どのアプリケーションに配置するかがわかりません。次の手順を実行して、DLLの構成にアクセスできます。

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

これが便利だと思ったのは、サードパーティアプリケーション用のDLLとしてプラグインを作成し、DLLを構成可能にしたいと思ったときだけです(ほとんどの人がそうすることはあまりないと思います)。

通常は、必要な構成パーツをapp.configまたはweb.configに移動するだけです。

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

于 2009-10-21T08:58:14.313 に答える
-2

DLL 内の構成ファイルから読み取る可能性があります。app.config ファイルを DLL プロジェクトに追加するだけで、DLL 内から構成設定を読み取ることができます。展開するとき、構成ファイルは「MyDLL.dll.config」という名前 (DLL の名前が「MyDLL.dll」であると仮定) を持ち、DLL と同じフォルダーにある必要があります。

次のコードは、自分の dll から接続文字列を返す必要があります。

return ConfigurationManager.AppSettings["ConnectionString"];

于 2009-10-21T09:02:10.607 に答える