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
?
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.
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.
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
Tags und Links .net visual-studio-2010 asp.net web-config-transform msbuild-wpp