Transformer web.config

Par Vijay Ramakrishnan

Les transformations du fichier web.config peuvent être appliquées automatiquement lorsqu’une application est publiée en fonction de :

Ces transformations se produisent pour l’un des scénarios de génération web.config suivants :

  • Généré automatiquement par le SDK Microsoft.NET.Sdk.Web.
  • Fourni par le développeur dans la racine de contenu de l’application.

Configuration de build

Les transformations de la configuration de build sont exécutées en premier.

Incluez un fichier web.{CONFIGURATION}.config pour chaque configuration de build (Déboguer|Mettre en production) nécessitant une transformation web.config.

Dans l’exemple suivant, une variable d’environnement propre à la configuration est définie dans web.Release.config :

<?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>

La transformation est appliquée lorsque la configuration est définie sur Version :

dotnet publish --configuration Release

La propriété MSBuild pour la configuration est $(Configuration).

Profil

Les transformations du profil sont exécutées ensuite, après les transformations de la configuration de build.

Incluez un fichier web.{PROFILE}.config pour chaque configuration de profil nécessitant une transformation web.config.

Dans l’exemple suivant, une variable d’environnement propre au profil est définie dans web.FolderProfile.config pour un profil de publication de dossier :

<?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>

La transformation est appliquée lorsque le profil est FolderProfile :

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

La propriété MSBuild pour le nom du profil est $(PublishProfile).

Si aucun profil n’est passé, le nom du profil par défaut est FileSystem et web. FileSystem.config est appliqué si le fichier est présent dans la racine du contenu de l’application.

Environnement

Les transformations de l’environnement sont exécutées en troisième place, après les transformations de la configuration de build et du profil.

Incluez un fichier web.{ENVIRONMENT}.config pour chaque environnement nécessitant une transformation web.config.

Dans l’exemple suivant, une variable d’environnement propre à l’environnement est définie dans web.Production.config pour l’environnement de production :

<?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>

La transformation est appliquée lorsque l’environnement est Production :

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

La propriété MSBuild pour l’environnement est $(EnvironmentName).

Lorsque vous publiez à partir de Visual Studio et utilisez un profil de publication, consultez Profils de publication Visual Studio (.pubxml) pour le déploiement d’applications ASP.NET Core.

La variable d’environnement ASPNETCORE_ENVIRONMENT est automatiquement ajoutée au fichier web.config lorsque le nom de l’environnement est spécifié.

Custom

Les transformations personnalisées sont exécutées en dernier, après les transformations de la configuration de build, du profil et de l’environnement.

Incluez un fichier {CUSTOM_NAME}.transform pour chaque configuration personnalisée nécessitant une transformation web.config.

Dans l’exemple suivant, une variable d’environnement de transformation personnalisée est définie dans custom.transform :

<?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>

La transformation est appliquée lorsque la propriété CustomTransformFileName est passée à la commande dotnet publish :

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

La propriété MSBuild pour le nom du profil est $(CustomTransformFileName).

Empêcher la transformation web.config

Pour empêcher les transformations du fichier web.config, définissez la propriété MSBuild $(IsWebConfigTransformDisabled) :

dotnet publish /p:IsWebConfigTransformDisabled=true

Ressources supplémentaires