Aracılığıyla paylaş


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

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

Mekanizma Notlar
runtimeconfig.json dosyası Ayarı belirli bir uygulamaya uygular. Uygulamanızın birden çok örneği tek bir sistemde aynı anda çalıştırılırsa ve her birini en iyi performans için yapılandırmak istiyorsanız bu dosyayı kullanın.
MSBuild özellikleri Ayarı belirli bir uygulamaya uygular. MSBuild özellikleri ,runtimeconfig.jsonayarlarına göre önceliklidir.
Ortam değişkenleri Ayarı tüm .NET uygulamalarına uygular.

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

Uyarı

Bu bölümdeki makaleler .NET çalışma zamanının yapılandırmasıyla ilgilidir. Bir uygulamayı .NET Framework'ten .NET'e geçiriyorsanız ve app.config dosyasının yerini almak istiyorsanız bkz. .NET'e yükselttikten sonra modernleştirme. .NET uygulamalarına özel yapılandırma değerleri sağlama hakkında bilgi için bkz. .NET'te yapılandırma.

Belgelerin bu bölümündeki makaleler, hata ayıklama ve çöp toplama gibi kategorilere göre düzenlenmiştir. Uygun olduğunda, runtimeconfig.json dosyaları, MSBuild özellikleri, ortam değişkenleri ve karşılaştırma amacıyla .NET Framework projeleri için app.config dosyaları yapılandırma seçenekleri olarak gösterilir.

runtimeconfig.json

Proje oluşturulduğunda çıkış dizininde [appname].runtimeconfig.json dosyası oluşturulur. Proje dosyasıyla aynı klasörde birruntimeconfig.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 yapılandırma seçeneklerini runtimeconfig.template.json dosyasına yerleştirin. Uygulamayı yalnızca çalıştırıyorsanız, doğrudan [appname].runtimeconfig.json dosyasına ekleyin.

Uyarı

  • [appname].runtimeconfig.json dosyası, sonraki derlemelerde üzerine yazılarak değiştirilir.
  • Uygulamanız OutputType değilse Exe ve yapılandırma seçeneklerinin runtimeconfig.template.json'den [appname].runtimeconfig.jsonkopyalanmasını istiyorsanız, proje dosyanızda açıkça olarak GenerateRuntimeConfigurationFiles olarak ayarlamanız true gerekir. runtimeconfig.json dosyası gerektiren uygulamalar için bu özellik varsayılan olarak olarak truegösterilir.

runtimeconfig.json veya runtimeconfig.template.json dosyasının configProperties bölümünde çalışma zamanı yapılandırma seçeneklerini belirtin. Bu bölümde şu form vardır:

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

Örnek [appname].runtimeconfig.json dosyası

Çıkış JSON dosyasına seçenekleri yerleştirdiyseniz, bunları özelliğinin runtimeOptions altına yerleştirin.

{
  "runtimeOptions": {
    "tfm": "net8.0",
    "framework": {
      "name": "Microsoft.NETCore.App",
      "version": "8.0.0"
    },
    "configProperties": {
      "System.Globalization.UseNls": true,
      "System.Net.DisableIPv6": true,
      "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, özelliğini runtimeOptions.

{
  "configProperties": {
    "System.Globalization.UseNls": true,
    "System.Net.DisableIPv6": true,
    "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 stilindeki .NET projelerinin .csproj veya .vbproj dosyasındaki MSBuild özellikleri kullanılarak ayarlanabilir. MSBuild özellikleri ,runtimeconfig.template.json dosyasında ayarlanan seçeneklerden önceliklidir.

Belirli bir MSBuild özelliği olmayan çalışma zamanı yapılandırma ayarları için bunun yerine MSBuild öğesini kullanabilirsiniz RuntimeHostConfigurationOption . özniteliğinin ayar adını kullanın.

.NET çalışma zamanının davranışını yapılandırmak için MSBuild özelliklerine sahip sdk stili bir proje dosyası örneği aşağıda verilmiştir:

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

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
  </PropertyGroup>

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

  <ItemGroup>
    <RuntimeHostConfigurationOption Include="System.Globalization.UseNls" Value="true" />
    <RuntimeHostConfigurationOption Include="System.Net.DisableIPv6" Value="true" />
  </ItemGroup>

</Project>

Çalışma zamanının davranışını yapılandırmaya yönelik MSBuild özellikleri, atık toplama gibi her alanın tek tek makalelerinde belirtilir. Ayrıca SDK stilindeki projeler için MSBuild özellikleri başvurusunun Çalışma Zamanı yapılandırması bölümünde de listelenirler.

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şkenleri olarak belirtilen yapılandırma düğümleri genellikle ön ek DOTNET_ sahiptir.

Uyarı

.NET 6, .NET çalışma zamanı davranışını yapılandıran ortam değişkenleri için DOTNET_ yerine COMPlus_ ön ekini standartlaştırır. Ancak, COMPlus_ ön eki çalışmaya devam eder. .NET çalışma zamanının önceki bir sürümünü kullanıyorsanız, ortam değişkenleri için COMPlus_ ön ekini kullanmaya devam etmelisiniz.

Ortam değişkenlerini Windows Denetim Masası'ndan, komut satırından veya hem Windows hem de Unix tabanlı sistemlerde yöntemini çağırarak Environment.SetEnvironmentVariable(String, String) program aracılığıyla tanımlayabilirsiniz.

Aşağıdaki örneklerde, komut satırında 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 bakınız