Transformieren von web.config

Von Vijay Ramakrishnan

Transformationen der web.config-Datei können automatisch angewendet werden, wenn eine App veröffentlicht wird basierend auf:

Diese Transformationen kommen bei den folgenden web.config-Generierungsszenarien vor:

  • Automatisch generiert vom Microsoft.NET.Sdk.Web-SDK.
  • Durch den Entwickler im Inhaltsstammverzeichnis der App bereitgestellt.

Buildkonfiguration

Transformationen der Buildkonfiguration werden zuerst ausgeführt.

Beziehen Sie eine web.{KONFIGURATION}.config-Datei für jede Buildkonfiguration (Debug|Release) ein, die eine web.config-Transformation erfordert.

Im folgenden Beispiel wird eine konfigurationsspezifische Umgebungsvariable in web.Release.config festgelegt:

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <location>
    <system.webServer>
      <aspNetCore>
        <environmentVariables xdt:Transform="InsertIfMissing">
          <environmentVariable name="Configuration_Specific" 
                               value="Configuration_Specific_Value" 
                               xdt:Locator="Match(name)" 
                               xdt:Transform="InsertIfMissing" />
        </environmentVariables>
      </aspNetCore>
    </system.webServer>
  </location>
</configuration>

Die Transformation wird angewendet, wenn die Konfiguration auf Release festgelegt ist:

dotnet publish --configuration Release

Die MSBuild-Eigenschaft für die Konfiguration ist $(Configuration).

Profile

Profiltransformationen werden als Zweites nach den Transformationen der Buildkonfiguration ausgeführt.

Beziehen Sie eine web.{PROFIL}.config-Datei für jede Profilkonfiguration ein, die eine web.config-Transformation erfordert.

Im folgenden Beispiel wird eine profilspezifische Umgebungsvariable in web.FolderProfile.config für ein Ordnerveröffentlichungsprofil festgelegt:

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <location>
    <system.webServer>
      <aspNetCore>
        <environmentVariables xdt:Transform="InsertIfMissing">
          <environmentVariable name="Profile_Specific" 
                               value="Profile_Specific_Value" 
                               xdt:Locator="Match(name)" 
                               xdt:Transform="InsertIfMissing" />
        </environmentVariables>
      </aspNetCore>
    </system.webServer>
  </location>
</configuration>

Die Transformation wird bei dem Profil FolderProfile angewendet:

dotnet publish --configuration Release /p:PublishProfile=FolderProfile

Die MSBuild-Eigenschaft für den Profilnamen ist $(PublishProfile).

Wenn kein Profil übergeben wird, lautet der Standardname für das Profil FileSystem, und web.FileSystem.config wird angewendet, wenn die Datei im Inhaltsstammverzeichnis der App vorhanden ist.

Umgebung

Umgebungstransformationen werden als Drittes nach den Transformationen von Buildkonfiguration und Profil ausgeführt.

Beziehen Sie eine web.{UMGEBUNG}.config-Datei für jede Umgebung ein, die eine web.config-Transformation erfordert.

Im folgenden Beispiel wird eine umgebungsspezifische Umgebungsvariable in web.Production.config für die Produktionsumgebung festgelegt:

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <location>
    <system.webServer>
      <aspNetCore>
        <environmentVariables xdt:Transform="InsertIfMissing">
          <environmentVariable name="Environment_Specific" 
                               value="Environment_Specific_Value" 
                               xdt:Locator="Match(name)" 
                               xdt:Transform="InsertIfMissing" />
        </environmentVariables>
      </aspNetCore>
    </system.webServer>
  </location>
</configuration>

Die Transformation wird angewendet, wenn die Umgebung Production ist:

dotnet publish --configuration Release /p:EnvironmentName=Production

Die MSBuild-Eigenschaft für die Umgebung ist $(EnvironmentName).

Wenn Sie die Veröffentlichung über Visual Studio durchführen und ein Veröffentlichungsprofil verwenden, finden Sie weitere Informationen unter Visual Studio-Veröffentlichungsprofile (PUBXML) für die Bereitstellung von ASP.NET Core-Apps.

Die ASPNETCORE_ENVIRONMENT-Umgebungsvariable wird automatisch der web.config-Datei hinzugefügt, wenn der Name der Umgebung angegeben wird.

Benutzerdefiniert

Benutzerdefinierte Transformationen werden als Letztes nach den Transformationen von Buildkonfiguration, Profil und Umgebung ausgeführt.

Beziehen Sie eine {BENUTZERDEFINIERTER_NAME}.transform-Datei für jede benutzerdefinierte Konfiguration ein, die eine web.config-Transformation erfordert.

Im folgenden Beispiel wird eine benutzerdefinierte Transformationsumgebungsvariable in custom.transform festgelegt:

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <location>
    <system.webServer>
      <aspNetCore>
        <environmentVariables xdt:Transform="InsertIfMissing">
          <environmentVariable name="Custom_Specific" 
                               value="Custom_Specific_Value" 
                               xdt:Locator="Match(name)" 
                               xdt:Transform="InsertIfMissing" />
        </environmentVariables>
      </aspNetCore>
    </system.webServer>
  </location>
</configuration>

Die Transformation wird angewendet, wenn die CustomTransformFileName-Eigenschaft dem dotnet publish-Befehl übergeben wird:

dotnet publish --configuration Release /p:CustomTransformFileName=custom.transform

Die MSBuild-Eigenschaft für den Profilnamen ist $(CustomTransformFileName).

Verhindern der web.config-Transformation

Um Transformationen der web.config-Datei zu verhindern, legen Sie die MSBuild-Eigenschaft $(IsWebConfigTransformDisabled) fest:

dotnet publish /p:IsWebConfigTransformDisabled=true

Zusätzliche Ressourcen