Ist es möglich, die Web.config-Transformation mit dem Publishing-Profil zu verknüpfen?

8

Zur Zeit kann ich die Web.config-Transformation auf Basis der Build-Konfiguration, z. Verwenden Sie connectionString=server;.. für Debug und connectionString=./SQLExpress;.. für Release .

Aber ist es möglich, eine Web.config-Transformation basierend auf dem Web-Veröffentlichungsprofil durchzuführen? I.e. Verwenden Sie connectionString=server1;.. für das Profil Server1 und connectionString=server2;.. für Server2 ?

    
abatishchev 21.06.2010, 19:41
quelle

3 Antworten

5

Wir behalten alle maschinen- / profilspezifischen Konfigurationen in separaten Konfigurationsdateien und verwenden dann configSource, um sie wie folgt einzuschließen ...

%Vor%

Auf diese Weise ist Web.config gleich und erfordert keine Transformationen. Wir tun dies für Verbindungszeichenfolgen, SMTP-Einstellungen und App-Einstellungen.

Wir kontrollieren Web.config und "maschinenspezifische" Dateien wie cstrings.config.production, cstrings.config.staging, etc.

Sobald Sie diese Struktur haben, ist es einfach, Bilder für verschiedene Profile zu generieren. Wir verfügen über Bereitstellungsskripts auf jedem Computer, die eine Umgebungsvariable lesen und entsprechend bereitstellen. Beispielsweise kopiert das Staging-Server-Buildskript cstrings.config.staging in cstrings.config usw.

    
Rob 30.06.2010 04:52
quelle
0

Ich glaube, dass die Veröffentlichungsprofile unabhängig von den Erstellungsprofilen sind, was ein wenig schade ist, da Sie leicht versehentlich eine Debug-Konfiguration auf Ihren Produktionsservern bereitstellen können.

Wenn Sie jedoch MSDeploy verwenden, gibt es Möglichkeiten, die web.config dort zu ändern. Siehe MSDeploy - Ändern des Verbindungszeichenfolgenparameters nach dem Bereitstellen des Pakets für weitere Details.

    
Zhaph - Ben Duguid 24.06.2010 13:49
quelle
0

Es könnte einen etwas anderen Weg geben, dies zu tun.

Erstellen Sie auf Ihren Produktionsservern einen Dummy-Eintrag für customdb in der Datei c: \ windows \ system32 \ drivers \ etc \ hosts auf jeder der Produktionsmaschinen. Jeder zeigt auf die Datenbank, die dieser Computer verwenden soll. Dann müssen Sie nur auf connectionString = customdb zeigen; für alle Ihre Produktionsserver.

Einziger Wermutstropfen wäre, dass Sie auf die hosts-Datei zugreifen müssen und eine db benötigen würde.

Hoffe das hilft

    
Jonathan Stanton 27.06.2010 10:03
quelle