2014-01-27 22 views
5

Ich versuche, die Entwicklungs- und Bereitstellungserfahrung in unserem Unternehmen zu verbessern, indem wir versuchen, den Overhead bei der Verwendung mehrerer Umgebungen zu begrenzen. Wir haben derzeit 3 ​​Umgebungen: Debug, Test, Release. Dies bedeutet, dass ich mehrere Konfigurationsdateien habe: web.Debug.config, web.Test.config, web.Release.config.Verwenden Sie die Standardwerte von web.config, wenn Sie Webbereitstellungsparameter verwenden

Wir verwenden NuGet-Pakete, um die intern entwickelten Bibliotheken bereitzustellen. Die Bibliothek selbst ist für die verwendeten Konfigurationswerte verantwortlich. Dies ist leicht mit NuGet transformation files möglich. Wenn Sie also einem Projekt ein Paket hinzufügen, wird die korrekte Umgebungstransformationsdatei auf die korrekte .config-Datei angewendet. Mit SlowCheetah und einigen manuellen Änderungen an der csproj-Datei funktioniert das recht gut. Beim Wechseln der Build-Konfiguration während der Entwicklung wird die korrekte .config-Datei verwendet. Beim Erstellen eines Bereitstellungspakets wird auch die korrekte .config-Datei verwendet.

Das Problem tritt auf, wenn ich eine parameters.xml Datei verwenden möchte, damit der Release Manager die Konfigurationswerte beim Deployment ändern kann. (How to: Use Web Deploy Parameters in a Web Deployment Package) Er möchte manchmal eine separate Umgebung einrichten, um bestimmte Dinge testen zu können, ohne die vorhandene Testumgebung zu stören.

Theoretisch ist die Verwendung einer Parameterdatei die perfekte Lösung. In Wirklichkeit scheint die Parameterdatei nicht in der Lage zu sein, die Konfigurationswerte aus der entsprechenden Konfigurationsdatei zu verwenden, wenn keine Werte übergeben werden. Das heißt, wenn wir eine Parameterdatei bereitstellen, müssen wir die tatsächlichen Standardwerte für jeden möglichen Ersatzwert definieren. Und natürlich kompliziert dies die Dinge, da sie nur eine Parameterdatei für alle Konfigurationen ist. Es wird auch nicht empfohlen, bei der Bereitstellung immer alle Konfigurationswerte anzugeben. Wenn sich ein Konfigurationswert ändert, müssen wir ihn an zwei Stellen ändern: das NuGet-Paket und das Bereitstellungsskript, das in den Standardumgebungen bereitgestellt wird.

Was wäre der einfachste Weg, um unser Problem zu lösen? Wie können wir dem Webbereitstellungsassistenten mitteilen, die Standardwerte aus der .config-Datei zu verwenden, die beim Erstellen des Bereitstellungspakets generiert wurde, wenn kein Wert eingegeben wurde?

Antwort

0

Ich habe auch mit diesem Problem gekämpft, die beste Lösung, die ich finden kann, ist das Hinzufügen von Parametern über die .pubxml-Dateien für jede Bereitstellung, dies bedeutet leider eine Verdopplung der Bemühungen (Sicher jemand hat einen besseren Ansatz?)

Verwandte Themen