0

Visual Studio 2008 で C# を使用してクラス ライブラリ (コア処理コンポーネント) を作成し、Web サイトに参照を追加しました。クラス ライブラリに正常にアクセスする Web サイト。クラス ライブラリで使用される、いくつかの構成値を持つ Web.config。

ここで、ウィンドウ アプリケーション (C# VS-2k8) で同じコンポーネントと構成にアクセスしたいと考えています。ウィンドウ アプリケーションで同じクラス ライブラリにアクセスできます。

Share the Web.configしかし、ウィンドウアプリケーションでウェブサイトのファイルを作成するにはどうすればよいですか? そのため、同じ構成を複製する必要はありません。

ありがとう。

アップデート#1

add config file in Class Library質問 1 の詳細:アプリケーションの構成ファイルに依存する代わりに使用したいと思います。たとえば、Web サイトの web.config または Windows アプリケーションの app.config です。

これは、複数のアプリで同じ構成の重複/競合を減らすためです。

アップデート#2

次のコードを使用して、ウィンドウと Web アプリケーションから外部の場所から構成を取得しています。しかし、それは私にとってはうまくいきません。

D:\test.exe.configファイル

<configuration>
  <appSettings>
    <add key="KeyName" value="KeyValue"/>
  </appSettings>
</configuration>

コードビハインド:

Configuration config = ConfigurationManager.OpenExeConfiguration("D:\\test.exe.config");
            string strValue = config.AppSettings.Settings["KeyName"].Value;
4

3 に答える 3

2

はい、私は解決策を得ました。貴重なご意見Bob Hornに感謝します。JoeBilly

要件に従って構成を実装しました。私は完全な解決策をたくさん探しましたが、常に概念と小さなコードを取得しているので、完全に機能するコードを提供しています。

下記のコードの助けを借りて、あなたは以下を達成し、あなたが望むように構成で遊ぶことができます。

  1. 共通構成 [CommonDB]は、単一のリポジトリーとして定義でき、外部XMLファイルに保管できます。クラスライブラリは、WindowsアプリケーションだけでなくWebアプリケーションでも常に1つの値を取得します。
  2. Webサイト固有の構成[WebDBConn]は、web.configに保存できます。
  3. ウィンドウアプリケーション固有の構成[WindowDBConn]は、app.configに記載されています。
  4. アプリケーションごとに異なる値で同じキー を使用する場合[INPUT_PATH]は、wen.configとapp.configで同じキーとdiff値を使用します。ただし、common.configでキーを使用できないようにする必要があります。そうしないと、common.configで使用できる値が取得されます。
  5. 良い点は、これらの値を取得するためのアプローチの背後にあるコードを変更する必要がないことです。

Common.Configクラスライブラリ/共通構成の場合

<?xml version="1.0" encoding="utf-8" ?>
<appSettings>
    <add key="CommonDB" value="CommonDBValue" />    
</appSettings>

Web.Configウェブサイト用

<configuration>
    <appSettings file="D:\Common.config">
        <add key="WebDBConn" value="WebDBConnValue" />
        <add key="INPUT_PATH" value="INPUT_PATH_WEB" />
    </appSettings>
</configuration>

App.configWindowsアプリケーション用

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings file="D:\Common.config">
        <add key="WindowDBConn" value="WindowDBConnValue" />
        <add key="INPUT_PATH" value="INPUT_PATH_WINDOW" />
    </appSettings>
</configuration>

背後にあるコード

string configValue = ConfigurationSettings.AppSettings["CommonDB"];

ありがとう...

于 2012-03-26T12:32:56.153 に答える
2

それは興味深い問題です。1 つのオプションは、データベースなど、複数のコンシューマーを対象とした別の永続化メカニズムを使用することです。そこに設定データを保存できますか?

または...ここで提供される回答を使用できます:

バイナリとは異なる場所にある App.config へのアクセス

于 2012-03-22T17:49:31.207 に答える
2

connectionStringsやのようなノードを外部化して集中化する必要がある場合、別のファイルを指すために a をappSettings受け入れることに注意してください。configSource

ただし、すべての構成要素がこの属性をサポートしているわけではありません。

<appSettings configSource="appSettings.config"/>
<connectionStrings configSource="connectionStrings.config"/>

.NET Framework バージョン 2.0 では、configSource 属性をサポートするすべての構成要素について、別のファイルに構成設定を含めることができるようになりました。ただし、configSource 属性を使用する場合は、要素の設定がマージされないため、セクション全体を別のファイルに移動する必要があります。configSource 属性を使用する場合、Web.config ファイルへの 1 回限りの書き込みがあります。これによりアプリケーションが再起動されますが、セクションへのその後の更新は別のファイルに直接書き込まれ、その後のアプリケーションの再起動は発生しません。詳細については、ConfigSourceを参照してください。

于 2012-03-24T17:19:30.753 に答える