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

Not

Bu bölümdeki makaleler .NET Çalışma Zamanı'nın yapılandırmasını ilgilendirir. .NET Core 3.1 veya sonraki bir yapılandırmasını kullanıyorsanız ve app.config dosyasının yerini almak arıyorsanız veya yalnızca .NET uygulamanıza özel yapılandırma değerleri kullanmanın bir yolunu arıyorsanız sınıfa ve .NET'te Yapılandırma'ya bakın.

Bu ayarları kullanmak, şu seçeneklerde cazip bir seçenektir:

  • Bir uygulamanın kaynak koduna sahip değil veya bunu denetlemezsiniz ve bu nedenle program aracılığıyla yapılandıramazsanız.
  • Tek bir sistemde aynı anda birden çok uygulama örneği çalıştırıldığından, her biri en iyi performans için yapılandırmak istiyor.

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

İpucu

Ortam değişkeni kullanarak bir seçeneğin yapılandırılması, ayarı tüm .NET uygulamalarına uygular. runtimeconfig.json veya proje dosyasında bir seçeneğin yapılandırılması ayarı yalnızca o uygulamaya uygular.

Bazı yapılandırma değerleri, yöntemi çağrılarak program aracılığıyla da AppContext.SetSwitch ayarlandırabilirsiniz.

Belgelerin bu bölümündeki makaleler, hata ayıklama ve çöp toplama gibi kategoriyegöre düzenlenmiştir. Uygun olduğunda runtimeconfig.json dosyaları, MSBuild özellikleri, ortam değişkenleri ve çapraz başvuru için yapılandırma seçenekleriapp.configprojeleri için .NET Framework gösterilir.

runtimeconfig.json

Bir proje derlemesi, çıktı dizininde [appname].runtimeconfig.json dosyası oluşturulur. Proje dosyasıyla aynı klasörde runtimeconfig.template.json dosyası varsa, içerdiği yapılandırma seçenekleri [appname].runtimeconfig.json dosyasına eklenir. Uygulamayı kendiniz derlemek için runtimeconfig.template.json dosyasına yapılandırma seçeneklerini girin. Uygulamayı yeni çalıştırdıysanız doğrudan [appname].runtimeconfig.json dosyasına girin.

Not

  • [appname].runtimeconfig.json dosyasının üzerine sonraki derlemelerde yazılır.
  • Uygulamanız doğru değilse OutputTypeExe ve OutputType dosyasından ExeGenerateRuntimeConfigurationFilestrue dosyasına kopyalanır. Runtimeconfig.json dosyası gerektiren uygulamalar için bu özellik varsayılan olarak kullanılır.

runtimeconfig.json dosyalarının configProperties bölümünde çalışma zamanı yapılandırma seçeneklerini belirtin. Bu bölümde şu biçim yer almaktadır:

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

Örnek [appname].runtimeconfig.json dosyası

Seçenekleri çıkış JSON dosyasına yerleştirerek özelliğinin altına yerleştirebilirsiniz 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ştirerek özelliğini atlarsınız runtimeOptions .

{
  "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 MSBuild .csproj veya .vbproj dosyasındaki .vbproj özellikleri kullanılarak ayarlanabilir. MSBuild, runtimeconfig.template.json dosyasında ayarlanmış seçeneklerden önceliklidir.

Çalışma zamanı davranışını yapılandırmak için aşağıdaki özelliklere sahip MSBuild SDK stili proje dosyası:

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

MSBuild çalışma zamanı davranışını yapılandırma özellikleri, her bir alan için ayrı makalelerde (örneğin, atık toplama) not edildi. Ayrıca SDK stili projeler için çalışma zamanı özellikleri MSBuild çalışma zamanı yapılandırması bölümünde de listelenir.

Ortam değişkenleri

Ortam değişkenleri, bazı çalışma zamanı yapılandırma bilgilerini sağlamak için kullanılabilir. Ortam değişkeni kullanarak çalışma zamanı seçeneğini yapılandırmak ayarı tüm .NET Core uygulamalarına uygular. Ortam değişkenleri olarak belirtilen yapılandırma düğmelerinin genellikle ön ekleri DOTNET_.

Not

.NET 6, .NET çalışma DOTNET_ zamanı davranışını COMPlus_ yapılandıran ortam değişkenleri yerine ön ekte standart hale gelir. Ancak, ön COMPlus_ ek çalışmaya devam eder. .NET çalışma zamanının önceki bir sürümünü kullanıyorsanız, yine de ortam değişkenleri için ön COMPlus_ eki kullanmalıdır.

Ortam değişkenlerini hem Windows Denetim Masası Environment.SetEnvironmentVariable(String, String) hem de Unix tabanlı sistemlerde çağırarak komut Windows program aracılığıyla tanımlayabilirsiniz.

Aşağıdaki örneklerde, komut satırına ortam değişkeni ayarlama adımları verilmiştir:

# Windows
set DOTNET_GCRetainVM=1

# Powershell
$env:DOTNET_GCRetainVM="1"

# Unix
export DOTNET_GCRetainVM=1

Ayrıca bkz.