2011-09-07 142 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