2011-09-07 15 views
5

Próbuję pracować z plikiem settings.settings w moim projekcie. Istnieją wartości, które należy udostępnić między plikiem .exe i różnymi bibliotekami DLL. Wolałbym nie przekazywać tych wartości, chciałbym uzyskać do nich dostęp, gdy ich potrzebuję, ale każdy projekt ustawia swoje wartości z nieco innymi nazwami i dlatego nie są osiągalne w innych projektach.Współdzielona konfiguracja między .exe a .dll

Czy istnieje sposób udostępniania zawartości pliku app.config między plikiem .exe i .dll przy użyciu metody settings.settings? Lub czy muszę wracać do korzystania z ConfigurationManager, aby to zrobić?

Odpowiedz

5

Wystarczy umieścić swoje ustawienia w pliku App.config i odczytać je z biblioteki dll. W rzeczywistości uważam, że to jedyne miejsce, w którym dll będzie szukać ustawień/config, lokalna konfiguracja dla dll jest ignorowana.

Oto krótki przykład, aby upewnić się, że biblioteka dll nie ma silnych odniesień do aplikacji. Ten kod nie jest świetny, ale masz pomysł.

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; 
    } 

Alternatywnie mają wspólny dll ze wspólnymi ustawieniami i wziąć zależność od każdego zespołu, który musi dzielić config. To jest o wiele czystsze.

+0

Ale jeśli mam ustawienie o nazwie setting1, które chcę uzyskać dostęp do rom zarówno moje .exe i moje .dll, w jaki sposób mam wspólny wpis? Ten z aplikacji będzie w applicationSettings/app_name.Properties.Settings i ten z biblioteki dll będzie w applicationSettings/library.Properties.Settings. Jak mogę uzyskać dostęp do tej samej wartości? –

+0

Dodano próbkę kodu – TheCodeKing

Powiązane problemy