.NET çalışma zamanı yapılandırma ayarları

.NET 5 + (.NET Core sürümleri dahil), çalışma zamanında .NET uygulamalarının davranışını yapılandırmak için yapılandırma dosyalarının ve ortam değişkenlerinin kullanımını destekler. Çalışma zamanı yapılandırması şu durumlarda çekici bir seçenektir:

  • Bir uygulama için kaynak kodu sahibi değilsiniz veya denetiminiz yoktur, bu nedenle program aracılığıyla yapılandıramamaktır.

  • Uygulamanızın birden çok örneği tek bir sistemde aynı anda çalışır ve her birini en iyi performans için yapılandırmak istiyorsunuz.

Not

Bu belge devam eden bir çalışmadır. Burada sunulan bilgilerin eksik veya yanlış olduğunu fark ederseniz, bunun hakkında bilgi sahibi olmak için bir sorun açın veya sorunu çözmek için bir çekme isteği gönderin . DotNet/docs deposu için çekme istekleri gönderme hakkında daha fazla bilgi için bkz. katkıda bulunan Kılavuzu.

.NET, çalışma zamanında uygulama davranışını yapılandırmak için aşağıdaki mekanizmaları sağlar:

İpucu

Bir ortam değişkeni kullanarak bir çalışma zamanı seçeneğinin yapılandırılması, ayarı tüm .NET uygulamalarına uygular. Runtimeconfig. JSON veya proje dosyasında bir çalışma zamanı seçeneğinin yapılandırılması, ayarı yalnızca bu uygulamaya uygular.

Bazı yapılandırma değerleri, yöntemi çağırarak programlı bir şekilde ayarlanabilir AppContext.SetSwitch .

Belgelerin bu bölümündeki makaleler, bir kategoriye göre düzenlenir, örneğin hata ayıklama ve çöp toplama. uygun olduğunda, yapılandırma seçenekleri runtimeconfig. json dosyaları, MSBuild özellikleri, ortam değişkenleri ve .NET Framework projelerine yönelik çapraz başvuru için app.config dosyaları için gösterilir.

runtimeconfig. JSON

Bir proje oluşturulduğunda, çıkışdizininde [AppName]. runtimeconfig. JSON dosyası oluşturulur. Proje dosyasıyla aynı klasörde bir runtimeconfig. Template. JSON dosyası varsa, içerdiği tüm yapılandırma seçenekleri [AppName]. runtimeconfig. JSON dosyasına eklenir. Uygulamayı kendiniz oluşturuyorsanız, tüm yapılandırma seçeneklerini runtimeconfig. Template. JSON dosyasına koyun. Uygulamayı yalnızca çalıştırıyorsanız doğrudan [AppName]. runtimeconfig. JSON dosyasına ekleyin.

Not

  • [AppName]. runtimeconfig. JSON dosyasının sonraki yapılarda üzerine yazılır.
  • Uygulamanız OutputType yoksa Exe ve yapılandırma seçeneklerinin runtimeconfig. Template. JSON ' dan [AppName]. runtimeconfig. JSON' a kopyalanmasını istiyorsanız, GenerateRuntimeConfigurationFiles proje dosyanızda açıkça olarak ayarlamanız gerekir true . Runtimeconfig. JSON dosyası gerektiren uygulamalar için, bu özellik varsayılan olarak olur true .

Runtimeconfig. JSON dosyalarının ConfigProperties bölümünde çalışma zamanı yapılandırma seçeneklerini belirtin. Bu bölüm şu biçimdedir:

"configProperties": {
  "config-property-name1": "config-value1",
  "config-property-name2": "config-value2"
}

Örnek [AppName]. runtimeconfig. JSON dosyası

Seçenekleri çıkış JSON dosyasına yerleştiriyorsanız, özelliğin altına yerleştirin runtimeOptions .

{
  "runtimeOptions": {
    "tfm": "netcoreapp3.1",
    "framework": {
      "name": "Microsoft.NETCore.App",
      "version": "3.1.0"
    },
    "configProperties": {
      "System.GC.Concurrent": false,
      "System.Threading.ThreadPool.MinThreads": 4,
      "System.Threading.ThreadPool.MaxThreads": 25
    }
  }
}

Örnek runtimeconfig. Template. JSON dosyası

Seçenekleri şablon JSON dosyasına yerleştiriyorsanız, runtimeOptions özelliği atlayın.

{
  "configProperties": {
    "System.GC.Concurrent": false,
    "System.Threading.ThreadPool.MinThreads": "4",
    "System.Threading.ThreadPool.MaxThreads": "25"
  }
}

MSBuild özellikleri

bazı çalışma zamanı yapılandırma seçenekleri, SDK stili .net Core projelerinin . csproj veya . vbproj dosyasında MSBuild özellikleri kullanılarak ayarlanabilir. MSBuild özellikler, runtimeconfig. template. json dosyasında ayarlanan seçeneklere göre önceliklidir.

aşağıda, çalışma zamanı davranışını yapılandırmaya yönelik MSBuild özelliklere sahip örnek bir SDK stili proje dosyası verilmiştir:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <PropertyGroup>
    <ConcurrentGarbageCollection>false</ConcurrentGarbageCollection>
    <ThreadPoolMinThreads>4</ThreadPoolMinThreads>
    <ThreadPoolMaxThreads>25</ThreadPoolMaxThreads>
  </PropertyGroup>

</Project>

çalışma zamanı davranışını yapılandırmaya yönelik MSBuild özellikler, örneğin çöp toplamagibi her bir alan için bireysel makalelerde belirtilmiştir. bunlar ayrıca SDK stili projelerin MSBuild özellikler başvurusunun çalışma zamanı yapılandırması bölümünde listelenir.

Ortam değişkenleri

Ortam değişkenleri, bazı çalışma zamanı yapılandırma bilgilerini sağlamak için kullanılabilir. Bir ortam değişkeni kullanarak bir çalışma zamanı seçeneğinin yapılandırılması, ayarı tüm .NET Core uygulamalarına uygular. Ortam değişkenleri olarak belirtilen yapılandırma örneklerinin genellikle DOTNET_ öneki vardır.

Not

.Net 6 DOTNET_ , COMPlus_ .NET çalışma zamanı davranışını yapılandıran ortam değişkenleri için yerine ön ek üzerinde standartlaştırır. Ancak COMPlus_ önek çalışmaya devam edecektir. .NET çalışma zamanının önceki bir sürümünü kullanıyorsanız, hala COMPlus_ ortam değişkenlerinin önekini kullanmanız gerekir.

ortam değişkenlerini Windows denetim masasından, komut satırında veya Environment.SetEnvironmentVariable(String, String) yöntemini hem Windows hem de unıx tabanlı sistemlerde çağırarak programlı bir şekilde tanımlayabilirsiniz.

Aşağıdaki örneklerde, komut satırında bir ortam değişkeninin nasıl ayarlanacağı gösterilmektedir:

# Windows
set DOTNET_GCRetainVM=1

# Powershell
$env:DOTNET_GCRetainVM="1"

# Unix
export DOTNET_GCRetainVM=1

Ayrıca bkz.