Преобразование web.configTransform web.config

Авторы: Виджай Рамакришнан (Vijay Ramakrishnan) и Люк Лэтем (Luke Latham).By Vijay Ramakrishnan and Luke Latham

Преобразования файла web.config можно применять автоматически при публикации приложения на основе следующих данных:Transformations to the web.config file can be applied automatically when an app is published based on:

Такие преобразования выполняются в любом из следующих сценариев создания web.config:These transformations occur for either of the following web.config generation scenarios:

  • Автоматическое создание в пакете SDK Microsoft.NET.Sdk.Web.Generated automatically by the Microsoft.NET.Sdk.Web SDK.
  • Размещение разработчиком в корневом каталоге содержимого приложения.Provided by the developer in the content root of the app.

Конфигурация сборкиBuild configuration

Первыми выполняются преобразования конфигурации сборки.Build configuration transforms are run first.

Добавьте файл web.{КОНФИГУРАЦИЯ}.config для каждой конфигурации сборки для отладки или выпуска, чтобы потребовать преобразование web.config.Include a web.{CONFIGURATION}.config file for each build configuration (Debug|Release) requiring a web.config transformation.

В следующем примере задается переменная для конкретной конфигурации в файле 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>

Это преобразование применяется, если настроена конфигурация выпуска (Release).The transform is applied when the configuration is set to Release:

dotnet publish --configuration Release

Свойство MSBuild для этой конфигурации имеет значение $(Configuration).The MSBuild property for the configuration is $(Configuration).

ПрофильProfile

Во вторую очередь, после конфигурации сборки, выполняются преобразования профиля.Profile transformations are run second, after Build configuration transforms.

Добавьте файл web.{ПРОФИЛЬ}.config для каждой конфигурации профиля, которой требуется преобразование web.config.Include a web.{PROFILE}.config file for each profile configuration requiring a web.config transformation.

В следующем примере в файле web.FolderProfile.config устанавливается переменная среды для конкретного профиля публикации папки.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>

Это преобразование применяется, если используется профиль FolderProfile.The transform is applied when the profile is FolderProfile:

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

Свойство MSBuild для имени профиля имеет значение $(PublishProfile).The MSBuild property for the profile name is $(PublishProfile).

Если профиль не передан, используется имя профиля по умолчанию FileSystem, а следовательно применяется файл web.FileSystem.config, если он присутствует в корневом каталоге содержимого приложения.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.

СредаEnvironment

Третьими, после преобразований конфигурации сборки и профиля, выполняются преобразования среды.Environment transformations are run third, after Build configuration and Profile transforms.

Добавьте файл web.{СРЕДА}.config для каждой среды, которой требуется преобразование web.config.Include a web.{ENVIRONMENT}.config file for each environment requiring a web.config transformation.

В следующем примере в файле web.Production.config устанавливается переменная среды для конкретной рабочей среды.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>

Это преобразование применяется, если используется среда Production.The transform is applied when the environment is Production:

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

Свойство MSBuild для этой среды имеет значение $(EnvironmentName).The MSBuild property for the environment is $(EnvironmentName).

Если вы используете профиль публикации для публикации из Visual Studio, ознакомьтесь со статьей Профили публикации Visual Studio для развертывания приложений ASP.NET Core.When publishing from Visual Studio and using a publish profile, see Профили публикации Visual Studio для развертывания приложений ASP.NET Core.

Переменная среды ASPNETCORE_ENVIRONMENT автоматически добавляется в файл web.config, если указано имя среды.The ASPNETCORE_ENVIRONMENT environment variable is automatically added to the web.config file when the environment name is specified.

ДругойCustom

И, наконец, после преобразований конфигурации сборки, профиля и среды выполняются пользовательские преобразования.Custom transformations are run last, after Build configuration, Profile, and Environment transforms.

Добавьте файл web.{ПОЛЬЗОВАТЕЛЬСКОЕ_ИМЯ}.config для каждой пользовательской конфигурации, которой требуется преобразование web.config.Include a {CUSTOM_NAME}.transform file for each custom configuration requiring a web.config transformation.

В следующем примере в файле 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>

Это преобразование применяется, если в команду dotnet publish передано свойство CustomTransformFileName.The transform is applied when the CustomTransformFileName property is passed to the dotnet publish command:

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

Свойство MSBuild для имени профиля имеет значение $(CustomTransformFileName).The MSBuild property for the profile name is $(CustomTransformFileName).

Предотвращение преобразования web.configPrevent web.config transformation

Чтобы избежать преобразования файла web.config, настройте свойство MSBuild $(IsWebConfigTransformDisabled) следующим образом.To prevent transformations of the web.config file, set the MSBuild property $(IsWebConfigTransformDisabled):

dotnet publish /p:IsWebConfigTransformDisabled=true

Дополнительные ресурсыAdditional resources