Wofür sind die Dateien Web.Debug.config und Web.Release.Config gedacht?


110

Ich habe gerade ein Upgrade auf Visual Studio 2010 und MVC 2.0 durchgeführt und festgestellt, dass an die Web.config zwei zusätzliche Dateien angehängt sind. Werden diese Dateien verwendet, um Debug- und Release-spezifische Einstellungen festzulegen, damit Sie die Haupt-Web.config nicht überladen?

Ist es überhaupt sinnvoll, eine Verbindungszeichenfolge in der Root-Datei Web.config zu platzieren, wenn ich eine lokale und eine Remote-Datei in der Debug- bzw. Release-Datei Web.configs habe?

Vielen Dank!

Antworten:


97

Dies ist die neue Web.config-Transformationsfunktion von Visual Studio 2010. Weitere Informationen finden Sie hier .


Bearbeiten:

Werden diese Dateien verwendet, um Debug- und Release-spezifische Einstellungen festzulegen, damit Sie die Haupt-web.config nicht überladen?

Es ist nicht auf drei Dateien beschränkt, Sie könnten (theoretisch) so viele Dateien haben, wie Sie Umgebungen haben. Die Web.config der "obersten Ebene" enthält eine Vorlage Ihrer Webkonfiguration. Die Dateien darunter enthalten Umgebungswerte, die für diese Umgebung spezifisch sind (z. B. wenn Sie unterschiedliche Verbindungszeichenfolgen für local / stage / test / Whatever haben).

Ist es überhaupt sinnvoll, eine Verbindungszeichenfolge in der Root-Datei web.config zu platzieren, wenn ich eine lokale und eine entfernte in der Debug- bzw. Release-Datei web.configs habe?

Es wäre nur sinnvoll, wenn es sich nicht zwischen den Umgebungen ändern würde. Klingt so, als ob dies in Ihrem Fall der Fall wäre. In Ihrem Fall wäre es nicht sinnvoll, es in der Web.config zu belassen.


12
Diese Funktion ist sogar 4 Jahre später halb gebacken! Dies funktioniert nur bei der Bereitstellung in Azure / Publishing-Paketen. Hier ist ein interessanter Thread: forums.asp.net/t/1532038.aspx
Nick

12

Dies sind Web.config-Transformationsdateien. In ASP.NET Web Deployment mit Visual Studio: Web.config-Dateitransformationen :

Es gibt zwei Möglichkeiten, den Prozess des Änderns der Web.config-Dateieinstellungen zu automatisieren: Web.config-Transformationen und Web Deploy-Parameter. Eine Web.config-Transformationsdatei enthält ein XML-Markup, das angibt, wie die Web.config-Datei bei der Bereitstellung geändert werden soll. Sie können verschiedene Änderungen für bestimmte Build-Konfigurationen und für bestimmte Veröffentlichungsprofile angeben. Die Standard-Build-Konfigurationen sind Debug und Release, und Sie können benutzerdefinierte Build-Konfigurationen erstellen. Ein Veröffentlichungsprofil entspricht normalerweise einer Zielumgebung.


1

Falls jemand interessiert ist, habe ich Folgendes geschrieben, um eine dynamische Verbindungszeichenfolge pro Umgebung zu haben. Ich wollte den Code in jeder Umgebung (Dev, Test, Pre-Prod, Prod ...) bereitstellen, ohne mir Gedanken über das Ändern der Verbindungszeichenfolgen machen zu müssen. Ich konnte mit Asp.Net MVC 4 keinen guten Weg finden, dies zu tun, und habe mir daher einen eigenen Weg ausgedacht, um mich auf eine Eigenschaftendatei pro Umgebung zu verlassen.

Möglicherweise gibt es eine bessere Lösung. Ich komme aus einem Wicket / Java-Umfeld und habe kürzlich mit der Entwicklung mit MVC 4 begonnen. Es ist also möglich, dass es eine bessere Lösung gibt. Aber hier ist ein Link zu meiner Frage und Antwort für eine dynamische Verbindungszeichenfolge:

Dynamische Verbindungszeichenfolge für Asp.net MVC 4


-3

Das war etwas, was in VS lange gebraucht wurde. Leider scheint es ein Problem mit der Implementierung zu geben. Betrachten Sie beispielsweise dieses Szenario (VS.2010 Ultimate, alle SP):

Web.Config

  • Kein Abschnitt connectionStrings
  • Vollmitgliedschaft Benutzer / Rolle / etc. Anbieterkonfiguration mit connectionStringName = "test"

Web.Release.Config

  • Keine Mitgliedschaftskonfiguration (bereits in der web.config-Hauptdatei angegeben)
  • Abschnitt connectionStrings mit dem CS "test"

Web.Debug.Config

  • Keine Mitgliedschaftskonfiguration (bereits in der web.config-Hauptdatei angegeben)
  • Abschnitt connectionStrings mit dem CS "test"

Bei der Ausführung der Anwendung tritt folgender Fehler auf:

Der Verbindungsname 'test' wurde in der Anwendungskonfiguration nicht gefunden oder die Verbindungszeichenfolge ist leer.

Mit anderen Worten, da die Verbindungszeichenelemente in der Release / Debug - Designer - Dateien und verwendeten durch Konfigurationselement in der Haupt (Web.config - Datei), ist es nicht in der Lage , es zu lösen.


5
Um fair zu sein, wenn Sie eine Verbindungszeichenfolge haben, die testsowohl in Ihrer Debug- als auch in Ihrer Release-Konfigurationsdatei benannt ist, sollte sie sich wirklich nur in der web.config-Hauptdatei mit den entsprechenden Abschnitten befinden. So wie es ist, duplizieren Sie Code, was die Vorlage für Sie lösen soll.
R0MANARMY

3
-1: Dieser sehr alte Beitrag war eine völlige Fehlinterpretation der Verwendung von Webkonfigurations-Transformationen. 1 Es ist eigentlich keine Antwort (nur eine falsche Beschwerde) und 2 es ist keine einfache Zusammenführung von Elementen, wie hier impliziert. Sie müssen explizite xsltErsetzungsbefehle haben. Gut gemacht, 5 Upvotes für etwas zu bekommen, das die Verwirrung über diese Transformationsdateien erhöht :)
Gone Coding
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.