2010-06-04 13 views
6

Jesteśmy niewielkim zespołem, pracującym nad projektem internetowym asp.net, a także usługami, obydwa projekty są zależne od udostępnionej biblioteki klas.Różne ustawienia konfiguracyjne na programistę dla biblioteki klasy C#

Chcielibyśmy mieć różne ustawienia biblioteki klas na jednego programistę (a później do produkcji). W ustawieniach uwzględniono poufne informacje, takie jak hasła, a także nazwy hostów.

W jaki sposób powinniśmy przypisać te ustawienia?

O ile się nie mylę, ustawienia web.config/application nie są wystarczająco dobre, ponieważ nie działają dla biblioteki klas współużytkowanych.

ps: Ponadto niektóre zmienne powinny być statycznie połączone, a pozostałe (takie jak ciągi połączeń) powinny być dynamiczne.

+1

W jaki sposób przygotowano rozwiązanie? Z jakiego oprogramowania sterującego źródłami korzystasz? –

+0

Używamy svn. Nie jestem pewien, co masz na myśli, mówiąc o tym, w jaki sposób rozwiązanie jest opracowane, zasadniczo jest to rozwiązanie, a przy tym mamy wiele projektów, w większości są to biblioteki klasowe, jedna główna biblioteka, której projekty: projekty usług i sieci, są zależne od. – user145100

+0

To jest trochę podobne do tego, co uznaliśmy za najlepsze do użycia: (lepiej niż to, co zostało omówione w tym wątku) http://stackoverflow.com/questions/236412/connection-string-hell-in-net- linq-sql-asp-net – user145100

Odpowiedz

2

Pliki web.config app.config są odczytywane z dowolnej witryny/aplikacji, z której korzystają. I.E. Wszystkie pliki ustawień aplikacji w bibliotece klas nie są używane. na przykład wszelkie odwołania do ConfigurationManager.ConnectionStrings ConfigurationManager.AppSettings w bibliotece klas będą korzystać z pliku web.config/app.config zdefiniowanego w aplikacji korzystającej z biblioteki klas, a nie z pliku .config, który mógł zostać skonfigurowany w bibliotece klas.

Najprostszym sposobem na zarządzanie różnymi ustawieniami dla każdego programisty i producenta jest przechowywanie konfiguracji w innym pliku, np.

<appSettings configSource="Web.appSettings.dev.config"/> 

Każde urządzenie ma własny plik Web.appSettings.dev.config, który nie jest kontrolowany przez źródło. Kiedy w produkcji po prostu zmienić na:

<appSettings configSource="Web.appSettings.live.config"/> 

Musisz tylko upewnić się, że jakiś szablon Web.appSettings.template.config w SVN, który jest panem, ale nie ma w nim żadnych ustawień i ręcznie zarządzaj upewniając się, że wszystkie nowe klucze lub ciągi połączeń dodane do szablonu również zostaną dodane do każdego pliku deweloperskiego i pliku produkcyjnego.

+0

Czy plik "Web.appSettings.dev.config" byłby zawsze czytany z tą nazwą pliku? jak wcześniej próbowałem dodać plik zasobów Ustawienia i wydaje się, że biblioteki klas NIE odczytują ich. – user145100

+0

Co masz na myśli, mówiąc o "pliku zasobów ustawień", mówię o pliku web.config i pliku app.config oraz o tym, jak przenieść różne sekcje, takie jak sekcja appSettings lub sekcja connectionstrings do oddzielnych plików. Biblioteki klas odczytują ustawienia z dowolnej aplikacji, która ich używa. –

+0

Tak, gdy uruchomiłem mój appname.exe, to tylko odczyt appname.exe.config i żaden inny plik. Nie chcę mieć wielu plików ustawień: appname1.exe.config, appname2.exe.config, web.config. – user145100