Trasformare web.configTransform web.config

Di Vijay Ramakrishnan e Luke LathamBy Vijay Ramakrishnan and Luke Latham

Le trasformazioni per il file web.config possono essere applicate automaticamente quando viene pubblicata un'app in base a:Transformations to the web.config file can be applied automatically when an app is published based on:

Queste trasformazioni si verificano per uno degli scenari di generazione di web.config seguenti:These transformations occur for either of the following web.config generation scenarios:

  • Generati automaticamente dall'SDK Microsoft.NET.Sdk.Web.Generated automatically by the Microsoft.NET.Sdk.Web SDK.
  • Forniti dallo sviluppatore nella radice del contenuto dell'app.Provided by the developer in the content root of the app.

Configurazione della buildBuild configuration

Le trasformazioni di configurazione della build vengono eseguite per prime.Build configuration transforms are run first.

Includere un file web.{CONFIGURAZIONE}.config per ogni configurazione della build (Debug|Versione) che richiede una trasformazione di web.config.Include a web.{CONFIGURATION}.config file for each build configuration (Debug|Release) requiring a web.config transformation.

Nell'esempio seguente, una variabile di ambiente specifica della configurazione viene impostata in web.Release.config:In the following example, a configuration-specific environment variable is set in 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 trasformazione viene applicata quando la configurazione è impostata su Versione:The transform is applied when the configuration is set to Release:

dotnet publish --configuration Release

La proprietà di MSBuild per la configurazione è $(Configuration).The MSBuild property for the configuration is $(Configuration).

ProfiloProfile

Le trasformazioni di profilo vengono eseguite per seconde, dopo le trasformazioni di configurazione della build.Profile transformations are run second, after Build configuration transforms.

Includere un file web.{PROFILO}.config per ogni configurazione del profilo che richiede una trasformazione di web.config.Include a web.{PROFILE}.config file for each profile configuration requiring a web.config transformation.

Nell'esempio seguente, una variabile di ambiente per il profilo è impostata in web.FolderProfile.config per un profilo di pubblicazione di cartella:In the following example, a profile-specific environment variable is set in web.FolderProfile.config for a folder publish profile:

<?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 trasformazione viene applicata quando il profilo è FolderProfile:The transform is applied when the profile is FolderProfile:

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

La proprietà di MSBuild per il nome del profilo è $(PublishProfile).The MSBuild property for the profile name is $(PublishProfile).

Se non viene passato alcun profilo, il nome del profilo predefinito è FileSystem e viene applicato web.FileSystem.config se il file è presente nella radice del contenuto dell'app.If no profile is passed, the default profile name is FileSystem and web.FileSystem.config is applied if the file is present in the app's content root.

AmbienteEnvironment

Le trasformazioni di ambiente vengono eseguite per terze, dopo le trasformazioni di configurazione della build e di profilo.Environment transformations are run third, after Build configuration and Profile transforms.

Includere un file web.{AMBIENTE}.config per ogni ambiente che richiede una trasformazione di web.config.Include a web.{ENVIRONMENT}.config file for each environment requiring a web.config transformation.

Nell'esempio seguente, una variabile di ambiente specifica dell'ambiente viene impostata in web.Production.config per l'ambiente Production:In the following example, a environment-specific environment variable is set in web.Production.config for the Production environment:

<?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 trasformazione viene applicata quando l'ambiente è Production:The transform is applied when the environment is Production:

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

La proprietà di MSBuild per l'ambiente è $(EnvironmentName).The MSBuild property for the environment is $(EnvironmentName).

Quando di esegue la pubblicazione da Visual Studio usando un profilo di pubblicazione, vedere Profili di pubblicazione di Visual Studio per la distribuzione di app ASP.NET Core.When publishing from Visual Studio and using a publish profile, see Profili di pubblicazione di Visual Studio per la distribuzione di app ASP.NET Core.

La variabile di ambiente ASPNETCORE_ENVIRONMENT viene aggiunta automaticamente al file Web.config quando viene specificato il nome dell'ambiente.The ASPNETCORE_ENVIRONMENT environment variable is automatically added to the web.config file when the environment name is specified.

Custom (Personalizzati)Custom

Le trasformazioni personalizzate vengono eseguite per ultime, dopo le trasformazioni di configurazione della build, di profilo e di ambiente.Custom transformations are run last, after Build configuration, Profile, and Environment transforms.

Includere un file {NOME_PERSONALIZZATO}.transform per ogni configurazione personalizzata che richiede una trasformazione di web.config.Include a {CUSTOM_NAME}.transform file for each custom configuration requiring a web.config transformation.

Nell'esempio seguente viene impostata una variabile di ambiente per una trasformazione personalizzata in custom.transform:In the following example, a custom transform environment variable is set in 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 trasformazione viene applicata al passaggio della proprietà CustomTransformFileName al comando dotnet publish:The transform is applied when the CustomTransformFileName property is passed to the dotnet publish command:

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

La proprietà di MSBuild per il nome del profilo è $(CustomTransformFileName).The MSBuild property for the profile name is $(CustomTransformFileName).

Impedire trasformazioni di web.configPrevent web.config transformation

Per impedire le trasformazioni del file web.config, impostare la proprietà MSBuild $(IsWebConfigTransformDisabled):To prevent transformations of the web.config file, set the MSBuild property $(IsWebConfigTransformDisabled):

dotnet publish /p:IsWebConfigTransformDisabled=true

Risorse aggiuntiveAdditional resources