2013-07-26 15 views
7

Próbuję zrozumieć ConfigurationManager w .NET, ćwicząc go w różnych scenariuszach.Opis menedżera Configuration Manager w .NET

Mam dwa projekty: Project1 i Project2. Project2 używa Project1.

Moja sytuacja: Mam sekcję (serializedfilename) w pliku app.config w projekcie1. i mam ten wiersz kodu w Class1 z projektu1

private static string SerializedConfiguration = ConfigurationManager.AppSettings["SerializedFilename"]; 

W project2 wzywam metodę w Class1 z projektu1 i dostaję wyjątek.

jego .NET nie wydaje się być w stanie znaleźć ustawienia w pliku app.config projektu 1, gdy został wywołany z projektu2, mimo że i'v odnosi się odpowiednio do projektu1.

Jednak, kiedy przenieść sekcję (serializedfilename) do app.config plik project2 ... wszystko wydaje się działać dobrze ...

Czy ktoś może mi wyjaśnić, co się tutaj dzieje? Mam pokusę założenia, że ​​ConfigurationManager istnieje tylko w kontekście aplikacji klienckiej (w tym przypadku project2), a nie w oryginalnej aplikacji (project1 w tym przypadku)

Uwaga: jestem nowy (1 miesiąc + do .NET)

Dzięki.

Odpowiedz

3

Po dodaniu aplikacji odniesienia. Kreator konfiguracji nie jest kopiowany. App.config musi znajdować się w głównym projekcie, w twoim projekcie przypadku 2. Jeśli dodasz go do projektu 2 i wywołasz go w odnośnym obiekcie Projekt 1, nie otrzymasz żadnego błędu, ponieważ VS wybierze go z twojego głównego projektu.

+0

dziękuję, że doceniam – oliverdejohnson

1

Prawidłowo menedżer konfiguracji szuka w zestawie wykonawczym pliku app.config lub web.config, aby wyszukać ustawienia.

Jeśli więc biblioteka DLL biblioteki klas, która uzyskuje dostęp do ustawień konfiguracyjnych, działa w ramach projektu strony internetowej, ustawienia aplikacji będą musiały zostać dodane do pliku web.config, a nie do pliku app.config biblioteki klas.

+0

Dzięki. ale jak to się stało, że dokumentacja nie powiedziała tak ... http: //msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.aspx – oliverdejohnson