Beste Vorgehensweise zum Konfigurieren mehrerer .Net-Anwendungen

Wir haben eine Reihe von verknüpften .NET 3.5-Anwendungen. Einige sind Websites, einige sind Webdienste und einige sind Windows-Anwendungen. Jede App hat derzeit ihre eigene Konfigurationsdatei (app.config oder web.config), und derzeit gibt es einige doppelte Schlüssel in den Konfigurationsdateien (die zur Zeit manuell synchronisiert werden), da mehrere Apps denselben Konfigurationswert benötigen. Diese Suite von Anwendungen wird auch in verschiedenen Umgebungen eingesetzt (Dev, Test, Live usw.)

Was ist der beste Ansatz, um die Konfiguration dieser mehreren Apps über eine einzige Konfigurationsquelle zu verwalten, sodass Konfigurationswerte bei Bedarf zwischen mehreren Apps geteilt werden können? Wir möchten auch separate Konfigurationen für jede Umgebung haben (so müssen Sie bei der Bereitstellung nicht bestimmte Konfigurationswerte manuell ändern, die umgebungsspezifisch sind, wie z. B. Verbindungszeichenfolgen), aber gleichzeitig möchten Sie nicht mehrere große Konfigurationen verwalten Dateien (eine für jede Umgebung), die das beim Hinzufügen neuer Config-Keys synchron halten, werden sich als problematisch erweisen.

0

5 Antworten

Sie können App.config in mehrere Konfigurationsdateien aufteilen. Sie geben nur den Namen der Datei an, die den Konfigurationsabschnitt enthält.

Ändern Sie app.config:


  
  


  

In app.config und SomeSetting.xml:



Wo SomeSetting.xml enthält:

Jetzt können Sie Ihre app.config aus verschiedenen Section-Dateien mit einer Art Build- oder Deploy-Skript zusammenstellen. Z.B.:

if debug copy SomeSettingDebug.xml deploydir/SomeSetting.xml
if MySql copy OtherSectionMySql.xml deploydir/OtherSetting.xml
0
hinzugefügt

Visual Studio verfügt über eine relativ obskure Funktion, mit der Sie vorhandene Elemente als Links hinzufügen können, die das erreichen, wonach Sie suchen. Schauen Sie sich an Derik Whittakers Post zu diesem Thema für mehr Details.

Visual Studio sollte diese Option wirklich sichtbar machen. Niemand denkt wirklich daran, auf den kleinen Pfeil neben dem "Hinzufügen" -Knopf zu klicken.

0
hinzugefügt

Sehen Sie sich das Prism Framework von Microsofts Patterns and Practices Group an.

0
hinzugefügt
Wie würde Prism bei Konfigurationsproblemen helfen?
hinzugefügt der Autor Robert MacLean, Quelle

Wir verwenden Dateivorlagen wie MyApp.config.template und MyWeb.config.template mit NAnt-Eigenschaften für die Bits, die in den verschiedenen Umgebungen unterschiedlich sind. Die Vorlagedatei könnte also etwa so aussehen:


    ${DbConnString}
    

Während eines Builds erzeugen wir alle Konfigurationen für die verschiedenen Umgebungen, indem wir einfach durch jede Umgebung in einem NAnt-Skript rotieren und den Wert der NAnt-Eigenschaften $ {DbConnString} und $ {WebServiceUri} für jede Umgebung ändern (in der Tat sind alle gesetzt) eine einzelne Datei mit Abschnitten für jede Umgebung) und eine NAnt-Kopie mit der Option zum Erweitern der Eigenschaften, die aktiviert sind.

Es hat eine Weile gedauert, bis es eingerichtet war, aber es hat uns mindestens zehnmal so viel Zeit gekostet, wie viel Zeit wir damit verbracht haben, mit verschiedenen Versionen von Konfigurationsdateien herumzuspielen.

0
hinzugefügt
0
hinzugefügt
Ich weiß nicht, warum das negativ war, diese 2 Fragen werden sehr hilfreich sein, wenn man Konfigurationen verwaltet.
hinzugefügt der Autor sontek, Quelle