2012-03-21 21 views
5

Mamy wiele aplikacji konsoli C#, które działają na zaplanowanych zadaniach. Wszystkie te aplikacje mają swój własny plik konfiguracyjny, który zawiera ustawienia takie jak nasz serwer SMTP. Jeśli nasz serwer SMTP kiedykolwiek się zmienił, musielibyśmy ręcznie przejść do każdego pliku konfiguracyjnego i zmienić go. Czy wiele aplikacji może spojrzeć na 1 plik konfiguracyjny na dysku C: czy jest to uważane za złą praktykę? Używanie bazy danych do przechowywania wartości to nie nie.Czy wiele aplikacji C# może używać jednego pliku App.Config?

+0

Dlaczego korzystanie z bazy danych to nie? Jest to dość powszechna praktyka. –

+1

Nasi administratorzy mogą nie mieć dostępu do bazy danych. – broke

Odpowiedz

14

Można wskazać zewnętrznych plików konfiguracyjnych wewnątrz pliku konfiguracyjnego aplikacji takich jak następuje, i mają wszystkie aplikacje używają tego samego zestawu ustawień z jednego pliku:

<appSettings file="c:\CommonSettings.config"> 
    <add key="MyKey" value="12"/> 
</appSettings> 

Aby uzyskać więcej informacji na ten temat można przeczytać następujące artykuły:

+0

To jest świetne, dzięki! – broke

3

Nie można bezpośrednio udostępnić jednego pliku konfiguracyjnego aplikacji, ponieważ nazwa pliku .config musi być zgodna z nazwą pliku wykonywalnego (czyli dla example.exe będzie to example.exe.config).

Warto mieć oddzielne wartości dla różnych aplikacji, ponieważ są to oddzielne aplikacje.

Jeśli istnieją sekcje konfiguracyjne, które chcesz udostępnić, możesz użyć atrybutu configSource, aby wskazać plik. Sekcja appSettings ma również określony atrybut file, którego można używać w ten sam sposób.

Jeśli istnieją pewne wartości konfiguracyjne, które udostępniane we wszystkich aplikacjach, można rozważyć umieszczenie ich w pliku machine.config dla używanej wersji architektury.

2

Czy możesz użyć niestandardowych plików xml do przechowywania danych konfiguracyjnych? Nie ma potrzeby używania app.config.

+0

Mogę używać plików xml. Myślałem, że to i tak może być łatwiejsze. – broke

0

Korzystając z frameworku Cinchoo, można to osiągnąć, po prostu tworząc niestandardowy obiekt konfiguracyjny i wykorzystując go wszystkie aplikacje konsolowe. Wszystkie będą czytać z tego samego pliku konfiguracyjnego. Więcej informacji można znaleźć pod adresem http://www.cinchoo.com

Powiązane problemy