Преобразование web.config
Примечание.
Это не последняя версия этой статьи. В текущем выпуске см . версию .NET 9 этой статьи.
Предупреждение
Эта версия ASP.NET Core больше не поддерживается. Дополнительные сведения см. в политике поддержки .NET и .NET Core. В текущем выпуске см . версию .NET 9 этой статьи.
Внимание
Эта информация относится к предварительному выпуску продукта, который может быть существенно изменен до его коммерческого выпуска. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
В текущем выпуске см . версию .NET 9 этой статьи.
Автор: Виджай Рамакришнан (Vijay Ramakrishnan)
Преобразования файла web.config можно применять автоматически при публикации приложения на основе следующих данных:
Такие преобразования выполняются в любом из следующих сценариев создания web.config:
- Автоматическое создание в пакете SDK
Microsoft.NET.Sdk.Web
. - Размещение разработчиком в корневом каталоге содержимого приложения.
Конфигурация построения
Первыми выполняются преобразования конфигурации сборки.
Добавьте файл web.{КОНФИГУРАЦИЯ}.config для каждой конфигурации сборки для отладки или выпуска, чтобы потребовать преобразование web.config.
В следующем примере задается переменная для конкретной конфигурации в файле 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).
dotnet publish --configuration Release
Свойство MSBuild для этой конфигурации имеет значение $(Configuration)
.
Профиль
Во вторую очередь, после конфигурации сборки, выполняются преобразования профиля.
Добавьте файл web.{ПРОФИЛЬ}.config для каждой конфигурации профиля, которой требуется преобразование web.config.
В следующем примере в файле web.FolderProfile.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="Profile_Specific"
value="Profile_Specific_Value"
xdt:Locator="Match(name)"
xdt:Transform="InsertIfMissing" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</location>
</configuration>
Это преобразование применяется, если используется профиль FolderProfile.
dotnet publish --configuration Release /p:PublishProfile=FolderProfile
Свойство MSBuild для имени профиля имеет значение $(PublishProfile)
.
Если профиль не передан, используется имя профиля по умолчанию FileSystem, а следовательно применяется файл web.FileSystem.config, если он присутствует в корневом каталоге содержимого приложения.
Среда
Третьими, после преобразований конфигурации сборки и профиля, выполняются преобразования среды.
Добавьте файл web.{СРЕДА}.config для каждой среды, которой требуется преобразование web.config.
В следующем примере в файле web.Production.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="Environment_Specific"
value="Environment_Specific_Value"
xdt:Locator="Match(name)"
xdt:Transform="InsertIfMissing" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</location>
</configuration>
Это преобразование применяется, если используется среда Production.
dotnet publish --configuration Release /p:EnvironmentName=Production
Свойство MSBuild для этой среды имеет значение $(EnvironmentName)
.
При публикации из Visual Studio и использовании профиля публикации см. статью Профили публикации Visual Studio (.pubxml) для развертывания приложений ASP.NET Core.
Переменная среды ASPNETCORE_ENVIRONMENT
автоматически добавляется в файл web.config, если указано имя среды.
Пользовательское
И, наконец, после преобразований конфигурации сборки, профиля и среды выполняются пользовательские преобразования.
Добавьте файл web.{ПОЛЬЗОВАТЕЛЬСКОЕ_ИМЯ}.config для каждой пользовательской конфигурации, которой требуется преобразование web.config.
В следующем примере в файле 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
.
dotnet publish --configuration Release /p:CustomTransformFileName=custom.transform
Свойство MSBuild для имени профиля имеет значение $(CustomTransformFileName)
.
Предотвращение преобразования web.config
Чтобы избежать преобразования файла web.config, настройте свойство MSBuild $(IsWebConfigTransformDisabled)
следующим образом.
dotnet publish /p:IsWebConfigTransformDisabled=true
Дополнительные ресурсы
- Синтаксис преобразования файла Web.config для развертывания проектов веб-приложений
- Web.config Transformation Syntax for Web Project Deployment Using Visual Studio (Синтаксис преобразования файла Web.config для развертывания проектов веб-приложений с помощью Visual Studio)
ASP.NET Core