2011-09-07 10 views
5

私は自分のプロジェクトのsettings.settingsファイルを使って作業しようとしています。 .exeファイルとさまざまなDLLの間で共有する必要がある値があります。むしろこれらの値を渡すだけではなく、必要なときにアクセスしたいのですが、それぞれのプロジェクトは若干異なる名前で値を設定するため、他のプロジェクトでは到達できません。.exeと.dllの間の共有設定

settings.settingsアプローチを使用して、.exeと.dllの間でapp.configファイルの内容を共有する方法はありますか?または、これを行うためにConfigurationManagerを使用することに戻る必要がありますか?

答えて

5

App.configファイルに設定を書き込んで、dllから読み込んでください。実際には、あなたのdllがsettings/configのために探す唯一の場所だと思うが、dllのローカル設定は無視される。

ここでは、dllにアプリケーションへの強い参照がないことを確認するための簡単な例を示します。このコードは大したものではありませんが、あなたはそのアイディアを得ています。

private string GetSettingValue(string key) 
    { 
    string executingAssembly = Assembly.GetEntryAssembly().GetName().Name; 
    string sectionName = "applicationSettings/" + executingAssembly 
               + ".Properties.Settings"; 
    ClientSettingsSection section = 
      (ClientSettingsSection)ConfigurationManager.GetSection(sectionName); 

    // add null checking etc 
    SettingElement setting = section.Settings.Get(key); 
    return setting.Value.ValueXml.InnerText; 
    } 

また共有の設定と共通dllを持っていると設定を共有する必要がある各アセンブリから依存関係を取ります。これははるかにクリーンです。

+0

しかし、設定1という名前の設定で、自分の.exeと.dllの両方にアクセスしたい場合は、どうすれば共通のエントリができますか?アプリケーションからのものはapplicationSettings/app_name.Properties.Settingsにあり、dllからのものはapplicationSettings/library.Properties.Settingsにあります。同じ値にアクセスするにはどうすればよいですか? –

+0

コードサンプルを追加しました – TheCodeKing

関連する問題