Web.config’i dönüştürme

Tarafından Vijay Ramakrishnan

Web.config dosyasına dönüştürmeler, bir uygulama aşağıdakilere göre yayımlandığında otomatik olarak uygulanabilir:

Bu dönüştürmeler aşağıdaki web.config oluşturma senaryolarından biri için gerçekleşir:

Yapı yapılandırması

Derleme yapılandırma dönüşümleri önce çalıştırılır.

Web ekleyin.{ Her derleme yapılandırması için CONFIGURATION}.config dosyası (Hata Ayıklama|Sürüm) bir web.config dönüşümü gerektirir.

Aşağıdaki örnekte, web'de yapılandırmaya özgü bir ortam değişkeni ayarlanmıştır. 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>

Dönüştürme, yapılandırma Yayın olarak ayarlandığında uygulanır:

dotnet publish --configuration Release

Yapılandırma için MSBuild özelliği şeklindedir $(Configuration).

Profil

Profil dönüştürmeleri, Derleme yapılandırması dönüşümlerinden sonra ikinci olarak çalıştırılır.

Web ekleyin.{ Web.config dönüşümü gerektiren her profil yapılandırması için PROFILE}.config dosyası.

Aşağıdaki örnekte, web'de profile özgü bir ortam değişkeni ayarlanmıştır. Klasör yayımlama profili için 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>

Dönüştürme, profil FolderProfile olduğunda uygulanır:

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

Profil adının MSBuild özelliği şeklindedir $(PublishProfile).

Hiçbir profil geçirilmezse, varsayılan profil adı FileSystem ve web'dir. Dosya, uygulamanın içerik kökünde mevcutsa FileSystem.config uygulanır.

Ortam

Ortam dönüştürmeleri, Derleme yapılandırması ve Profil dönüşümlerinden sonra üçüncü sırada çalıştırılır.

Web ekleyin.{ Web.config dönüşümü gerektiren her ortam için ENVIRONMENT}.config dosyası.

Aşağıdaki örnekte, web'de ortama özgü bir ortam değişkeni ayarlanmıştır. Üretim ortamı için 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>

Dönüştürme, ortam Üretim olduğunda uygulanır:

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

Ortamın MSBuild özelliği şeklindedir $(EnvironmentName).

Visual Studio'dan yayımlarken ve yayımlama profili kullanırken bkz . ASP.NET Core uygulama dağıtımı için Visual Studio yayımlama profilleri (.pubxml).

Ortam ASPNETCORE_ENVIRONMENT adı belirtildiğinde ortam değişkeni web.config dosyasına otomatik olarak eklenir.

Özel

Özel dönüştürmeler, Derleme yapılandırması, Profil ve Ortam dönüşümlerinden sonra en son çalıştırılır.

Web.config dönüşümü gerektiren her özel yapılandırma için bir {CUSTOM_NAME}.transform dosyası ekleyin.

Aşağıdaki örnekte custom.transform içinde bir özel dönüştürme ortamı değişkeni ayarlanmıştır:

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

Dönüştürme, özelliği dotnet publish komutuna geçirildiğinde CustomTransformFileName uygulanır:

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

Profil adının MSBuild özelliği şeklindedir $(CustomTransformFileName).

Web.config dönüştürmesini engelleme

web.config dosyasının dönüşümlerini önlemek için MSBuild özelliğini $(IsWebConfigTransformDisabled)ayarlayın:

dotnet publish /p:IsWebConfigTransformDisabled=true

Ek kaynaklar