2011-09-07 109 views
5

我正尝试在我的项目中使用settings.settings文件。有些值需要在.exe文件和各种DLL之间共享。我宁愿不只是传递这些值,我希望在需要它们时访问它们,但每个项目的名称都稍微不同,因此其他项目无法访问它们。.exe和.dll之间的共享配置

有什么办法可以使用settings.settings方法共享.exe和.dll之间的app.config文件的内容?还是我需要回到使用ConfigurationManager才能做到这一点?

回答

5

只需将您的设置放在App.config文件中,并从您的dll中读取它们即可。事实上,我相信这是唯一的地方你的DLL将寻找设置/配置,本地配置的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

但是,如果我有一个名为setting1的设置,我想要访问我的.exe和我的.dll文件,我该如何设置一个常用的条目?应用程序中的应用程序将位于applicationSettings/app_name.Properties.Settings中,而来自dll的将位于applicationSettings/library.Properties.Settings中。我如何让他们获得相同的价值? –

+0

添加了一个代码示例 – TheCodeKing