2010-05-13 8 views
8

OK Wiem, że to może być problem z projektowaniem, więc bardzo chciałbym mieć uwagi na ten temat.Jak mogę udostępnić ustawienia konfiguracji dla wielu projektów w Visual Studio?

Mam rozwiązanie aplikacji internetowej Visual Studio. Mam trzy projekty jako UserInterface, BusinessLogic i DataAccess.

Musiałem zapisać niektóre ustawienia zdefiniowane przez użytkownika i utworzyłem configSections w pliku konfiguracyjnym.

Uzyskuję dostęp do tych configSections za pośrednictwem klas dziedziczących z klasy bazowej .NET o numerze ConfigurationSection.

W skrócie dla każdego projektu miałem oddzielny configSection i dla tego odpowiedniego configSection miałem klasę w tym projekcie dziedzicząc po ConfigurationSection, aby uzyskać dostęp do ustawień sekcji konfiguracji.

To działa dobrze. Ale problem powstaje, jeśli istnieje jakieś ustawienie, które muszę zastosować w wielu projektach. Więc jeśli potrzebuję użyć ustawienia zdefiniowanego w projekcie UserInterface configSection w, powiedzmy, projekcie BusinessLogic, muszę faktycznie zrobić kopię tego ustawienia w configSection BusinessLogic. Kończy się to tym samym kopiowaniem tych samych ustawień w wielu konfiguracjach.

Czy to nie jest zbyt zbędne?

Odpowiedz

3

Put wspólne ustawienia konfiguracyjne w oddzielnym pliku i używać tej techniki: http://blogs.msdn.com/jjameson/archive/2009/04/02/linked-files-in-visual-studio-solutions.aspx

+0

Musisz zachować ten link, bardzo dobrze opisuje powiązane pliki. – Will

+0

Hmm. Czy nie jest to bardzo podobne do tworzenia "wspólnego" projektu i umieszczania w nim wspólnych ustawień. A następnie reszta projektów może uzyskać dostęp do tego wspólnego dla niego? – neebz

0

Korzystanie przykład:

Wystarczy utworzyć ustawienie w projekcie logiki biznesowej, a następnie wystawiać Getter do projektu User Interface .

Następnie interfejs użytkownika może wysłać zapytanie do BL o wartość. Twoje ustawienie konfiguracji jest tylko w jednym miejscu - najniższy poziom może być.

Jeśli jednak zastąpić projekt niższy poziom z nowym musisz upewnić się, że ustawienie jest zbyt replikowane. Jest to prawdopodobnie problem, jeśli ustawienie znajduje się na poziomie dostępu do danych, ponieważ jest to najbardziej prawdopodobne, że zostanie zmieniony (na przykład inny dostawca bazy danych).

1

faktycznie nigdy nie zrobić tego, ale teoretycznie może pracować ...

Podczas definiowania sekcję konfiguracji niestandardowych, ustaw jego configSource do zewnętrznego pliku (whatever.config). Ten zewnętrzny plik powinien zostać dodany do ROZWIĄZANIA, a nie do projektu. Pojawi się pod "Elementami rozwiązania". W każdym projekcie Dodaj istniejący plik, przejdź do dowolnego pliku .config, kliknij menu na przycisku Dodaj i wybierz "Dodaj jako łącze".

Whatever.config będzie pojedynczy plik można edytować w punktach rozwiązanie, a to zostanie skopiowany do każdej aplikacji w czasie kompilacji.

+0

Tak, myślałem na tych samych zasadach. Jedyny problem jaki miałem to to, że chciałem, aby klasa handler (która parsuje informacje z what.config) również była rozwiązaniem.tak, że config + jego parser istnieją tylko raz i są połączone w wiele projektów. Chociaż problem nie polega na tym, że studio graficzne skompiluje klasę na poziomie przedmiotu rozwiązania? Nie byłem w stanie tego zrobić. – neebz

0

Jest to znacznie lepszy sposób to zrobić za pomocą „Projekty współdzielonych” zobacz moją odpowiedź na very similar question here.

Powiązane problemy