2012-05-01 89 views
2

別のアプリケーション用のプラグインをDLLとして作成していますが、DLLを再コンパイルせずに設定できる設定が必要です。私は通常、アプリケーションプロジェクトで行うように、Visual Studioを使って設定クラスを作成しました。プロジェクトをビルドすると、libraryname.dll.configファイルが作成され、出力に直接コピーされます。library.dll.configから読み込むDLL ApplicationSettingsクラスを作成するにはどうすればよいですか?

しかし、すでに他の人が見つけて書いたように、このファイルは使用されません。代わりに、これらのDLL設定を変更する場合は、DLLを使用しているアプリケーションの設定ファイルに設定をマージする必要があります。

私の問題は、呼び出し元のアプリケーションが自分のアプリケーションではないため、プラグインの残りのファイルを使用してプラグインの設定を行うことです。

私はこれまで、System.Configuration.ConfigurationManager.OpenExeConfiguration()を使って、このようなDLLの設定ファイルを読みました。設定から読んでいました

public static string GetSettingValue(string key) 
    { 
     string assemblyPath = System.Reflection.Assembly.GetExecutingAssembly().Location; 
     var config = ConfigurationManager.OpenExeConfiguration(assemblyPath); 
     var keyVal = config.AppSettings.Settings[key] 
     return keyVal.Value; 
    } 

は、私は本当に唯一の文字列を格納することができ<appSettings>を使用して、その後ではなく、その後のVisual Studioによって作成された新しいタイプセーフApplicationSettingsクラスのような、しかしこの

よう
<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
    <add key="URL" value="http://www.acme.com" /> 
    <add key="EnableAdmin" value="False" /> 
    </appSettings> 
</configuration> 

を提出します。

Visual Studioによって作成されたApplicationSettingsクラスのメソッドを2つ以上オーバーライドして、デフォルトでDLL設定ファイルから読み込む方法があるのですか?どのconfigファイルが読み込まれるべきかがわかります。

答えて

0

メインセクションのweb.configまたはメイン実行可能ファイルのapp.configに適切なセクションをコピーしてください。ConfigurationManager.AppSettings["URL"]は正常に動作します。

1

呼び出し元アプリケーションでapplicationsettingsファイルをマージしようとすることができます。このSOスレッドはとてもうまく説明します。

How to load a separate Application Settings file dynamically and merge with current settings?

あなたがやっているようにあなただけのConfigurationクラスを使用することができ、呼び出し元のアプリケーションの編集を台無しにしたくない場合。別の例があります。私はCOMを介してWCFサービスを呼び出す必要があるときに、このアプローチを使用しました。

http://www.twisted-bits.com/2012/04/use-a-net-configuration-file-with-a-class-library-dll/

関連する問題