Laden...

Getrennte Web.configs für Entwicklung und Release?

Erstellt von barzefutz vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.004 Views
B
barzefutz Themenstarter:in
95 Beiträge seit 2007
vor 13 Jahren
Getrennte Web.configs für Entwicklung und Release?

Hallo,

ich habe eine ASP.NET-Webanwendung. Die Einstellungen in der web.config unterscheiden sich zwischen der lokalen Version, an der ich arbeite, und der laufenden Version auf dem Webserver (z.b. compilation debug="true" für lokal, "false" für den Webserver, und noch andere Dinge wie Datenbankpfade). Momentan ändere ich diese Werte kurz vor dem Hochladen auf den Webserver von Hand um und dann beim Weiterarbeiten wieder zurück, was natürlich hochgradig lästig ist... Weiss jemand, wie ich das irgendwie automatisieren kann? Wie macht ihr das? Kann man die Werte in der web.config von bestimmten Bedingungen abhängig machen?

R
68 Beiträge seit 2010
vor 13 Jahren

Hier gibts eine Klasse, die die web.config zur Laufzeit ändert:
http://bytes.com/topic/net/answers/674339-runtime-editing-web-config

Google-Suche nach "modify web.config runtime" liefert noch mehrere Tipps.

Ich würde zuerst das Debug-Setting auslesen und dann in Abhängigkeit
des hostnames das Setting entsprechend setzen.

Hier gibts noch eine coole Lösung, die mit verschiedenen web.configs hantiert
und diese in Abhängigkeit des Builds (debug/release) per script setzt:
http://www.hanselman.com/blog/ManagingMultipleConfigurationFileEnvironmentsWithPreBuildEvents.aspx

Gefällt mir persönlich eigentlich noch besser.

Robin

79 Beiträge seit 2005
vor 13 Jahren

Du solltest dir aml das WebDeploymentProject ansehen:

http://blogs.msdn.com/webdevtools/archive/2008/01/25/announcing-rtw-of-visual-studio-2008-web-deployment-projects-wdp.aspx
http://weblogs.asp.net/scottgu/archive/2008/01/28/vs-2008-web-deployment-project-support-released.aspx

Über ein eigenes Projekt in deiner Solution lässt sich für einzelne Teile der Web.Config jeweils unterschiedlich Inhalte festlegen. Nach kurzer Einarbeitung sehr zugänglich und man muss sich quasi um nix mehr kümmern.

roses are #FF0000 violets are #0000FF
all my base are belong to you

B
barzefutz Themenstarter:in
95 Beiträge seit 2007
vor 13 Jahren

Ich wollte hier gerade reinposten, dass ich die Lösung nach langer Recherche gefunden habe, aber KenchU hat es ja schon vorweggenommen. Funtkioniert prima mit dem Web Deployment Project (es gibt übrigens auch schon eine Betaversion für VS 2010).

RBA285 danke auch dir für deine Antwort

R
68 Beiträge seit 2010
vor 13 Jahren

Nachdem ich jetzt auch mt dem Problem konfrontiert war, habe
ich mich nach längerem Suchen für eine sehr schlanke und einfache
Methode entschieden (VS2008):

Im Pre-Build Event des Projektes werkelt folgender Zweizeiler:

IF "$(ConfigurationName)"=="Debug"  COPY /Y "$(ProjectDir)WebDev.config" "$(ProjectDir)Web.config"
IF "$(ConfigurationName)"=="Release" COPY /Y "$(ProjectDir)WebProd.config" "$(ProjectDir)Web.config"

Im Root der Applikation liegen drei .configs:
Web.config => wird beim compilieren überschrieben von
WebDev.Config => Wenn mit "Debug" compiliert wird
WebProd.Config => Wenn mit "Release" compiliert wird

Vielleicht nicht so mächtig wie andere Lösungen, aber einfach zu handhaben
und tut genau das, was es soll.

Robin