100

Ich habe gerade ein Upgrade auf Visual Studio 2010 und MVC 2.0 durchgeführt und festgestellt, dass die Datei Web.config zwei zusätzliche Dateien enthält? Werden diese Dateien verwendet, um bestimmte Einstellungen für das Debuggen und Freigeben festzulegen, damit Sie die Hauptdatei Web.config nicht überladen?Was sind die Dateien Web.Debug.config und Web.Release.Config für?

Ist es sogar sinnvoll, eine Verbindungszeichenfolge in die Stammdatei Web.config zu legen, wenn ich eine lokale und eine entfernte in der debug und release Web.configs jeweils habe?

Danke!

Antwort

90

Es ist die neue Web.config-Transformationsfunktion von Visual Studio 2010. More information here.


Edit:

Are these files used to specify debug and release specific settings, so you don't clutter up the main web.config?

Es ist nicht auf drei Dateien beschränkt ist, könnte man (theoretisch) haben so viele Dateien wie Sie Umgebungen haben. Die "top level" Web.config stellt eine Vorlage Ihrer Webkonfiguration zur Verfügung. Die Dateien darunter bieten Ersatzwerte, die für diese Umgebung spezifisch sind (wie wenn Sie unterschiedliche Verbindungszeichenfolgen für local/stage/test/was auch immer haben).

Does it even make sense to place a connection string in the root web.config file if I have have a local and remote one in the debug and release web.configs respectively.

Es wäre nur sinnvoll, wenn es nicht zwischen den Umgebungen wechseln würde. Klingt wie in Ihrem Fall, in Ihrem Fall nein, es wäre nicht sinnvoll, es in der Web.config zu belassen.

+9

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

-3

Das war etwas lange in VS benötigt. Leider scheint es ein Problem mit der Implementierung zu geben. Zum Beispiel betrachten Sie dieses Szenario (VS.2010 Ultimate alle SP):

Web.Config

  • Kein Abschnitt connection
  • Vollmitgliedschaft Benutzer/Rollen/etc. Provider Konfiguration connection = "test"

Web.Release.Config

  • Keine Mitgliedschaft Konfiguration (spezifiziert bereits in Haupt web.config)
  • Abschnitt connection einschließlich der CS mit "test" genannt

Web.Debug.Config

  • Keine Mitgliedschaft Konfiguration (bereits im Haupt web.config angegeben)
  • Abschnitt connection einschließlich der CS „test“

benannt Wenn die Anwendung ausgeführt wird, wird folgende Fehler gibt:

The connection name 'test' was not found in the applications configuration or the connection string is empty.

Mit anderen Worten: Da die Verbindungszeichenfolgenelemente in den Release/Debug-Designerdateien und von Konfigurationselementen in der Hauptdatei (Web.config) verwendet werden, kann sie nicht aufgelöst werden.

+5

Um fair zu sein, wenn Sie eine Verbindungszeichenfolge namens "test" in Ihren Debug und Release-Konfigurationsdateien haben, sollte es wirklich nur sein die Haupt-web.config mit den entsprechenden Abschnitten Vorlagen. So wie du Code duplizierst, was die Vorlage für dich lösen soll. – R0MANARMY

+3

-1: Dieser sehr alte Beitrag war eine komplette Fehlinterpretation der Verwendung von Webkonfigurations-Transformationen. ** 1 ** Es ist nicht wirklich eine Antwort (nur eine falsche Beschwerde) und ** 2 ** es ist nicht eine einfache Zusammenführung von Elementen wie hier impliziert. Sie müssen explizite 'xslt' Ersetzungsbefehle haben. * Gut gemacht, wenn du 5 Upvotes für etwas bekommst, das zur Verwirrung über diese Transformationsdateien beiträgt * :) –

9

Diese sind Web.Konfigurationsdateien für die Umwandlung. Von ASP.NET Web Deployment using Visual Studio: Web.config File Transformations:

There are two ways to automate the process of changing Web.config file settings: Web.config transformations and Web Deploy parameters. A Web.config transformation file contains XML markup that specifies how to change the Web.config file when it is deployed. You can specify different changes for specific build configurations and for specific publish profiles. The default build configurations are Debug and Release, and you can create custom build configurations. A publish profile typically corresponds to a destination environment.

1

Falls jemand interessiert ist, hier ist etwas, das ich eine dynamische Verbindungszeichenfolge pro Umwelt haben geschrieben werden. Ich wollte den Code in jeder Umgebung (Dev, Test, Pre-Prod, Prod ...) bereitstellen, ohne sich um die Änderung von Verbindungszeichenfolgen kümmern zu müssen. Ich konnte mit Asp.Net MVC 4 nicht wirklich einen guten Weg finden, dies zu tun, also habe ich meinen eigenen Weg gefunden, sich auf eine Eigenschaftendatei pro Umgebung zu verlassen.

Es könnte eine bessere Lösung geben, ich komme aus einem Wicket/Java-Hintergrund und vor kurzem begann mit MVC 4 zu entwickeln, so ist es möglich, eine bessere Lösung existiert. Aber hier ist ein Link zu meiner Frage und Antwort für eine dynamische Verbindungszeichenfolge:

Asp.net MVC 4 dynamic connection string

Verwandte Themen