Pengaturan konfigurasi Runtime .NET

.NET 5+ (termasuk versi .NET Core) mendukung penggunaan file konfigurasi dan variabel lingkungan untuk mengonfigurasi perilaku aplikasi .NET pada durasi.

Catatan

Artikel di bagian ini menyangkut konfigurasi .NET Runtime itu sendiri. Jika Anda bermigrasi ke .NET Core 3.1 atau yang lebih baru dan mencari pengganti file app.config , atau jika Anda hanya ingin cara menggunakan nilai konfigurasi kustom di aplikasi .NET Anda, lihat Microsoft.Extensions.Configuration.ConfigurationBuilder kelas dan Konfigurasi di .NET.

Menggunakan pengaturan ini adalah opsi yang menarik jika:

  • Anda tidak memiliki atau mengontrol kode sumber untuk aplikasi dan karenanya tidak dapat mengonfigurasinya secara terprogram.
  • Beberapa instans aplikasi Anda berjalan pada saat yang sama pada satu sistem, dan Anda ingin mengonfigurasi masing-masing untuk performa optimal.

.NET menyediakan mekanisme berikut untuk mengonfigurasi perilaku runtime .NET:

Tip

Mengonfigurasi opsi dengan menggunakan variabel lingkungan menerapkan pengaturan ke semua aplikasi .NET. Mengonfigurasi opsi dalam runtimeconfig.json atau file proyek menerapkan pengaturan hanya untuk aplikasi tersebut.

Beberapa nilai konfigurasi juga dapat diatur secara terprogram dengan memanggil AppContext.SetSwitch metode .

Artikel di bagian dokumentasi ini diatur menurut kategori, misalnya, penelusuran kesalahan dan pengumpulan sampah. Jika berlaku, opsi konfigurasi ditampilkan untuk file runtimeconfig.json, properti MSBuild, variabel lingkungan, dan, untuk referensi silang, app.config file untuk proyek .NET Framework.

runtimeconfig.json

Saat proyek dibuat, file [appname].runtimeconfig.json dihasilkan di direktori output. Jika file runtimeconfig.template.json ada di folder yang sama dengan file proyek, opsi konfigurasi apa pun yang ada di dalamnya dimasukkan ke dalam file [appname].runtimeconfig.json . Jika Anda membuat aplikasi sendiri, letakkan opsi konfigurasi apa pun di file runtimeconfig.template.json . Jika Anda hanya menjalankan aplikasi, masukkan langsung ke file [appname].runtimeconfig.json .

Catatan

  • File [appname].runtimeconfig.json akan ditimpa pada build berikutnya.
  • Jika aplikasi OutputType Anda tidak Exe dan Anda ingin opsi konfigurasi disalin dari runtimeconfig.template.json ke [appname].runtimeconfig.json, Anda harus secara eksplisit mengatur GenerateRuntimeConfigurationFiles ke true dalam file proyek Anda. Untuk aplikasi yang memerlukan file runtimeconfig.json , properti ini default ke true.

Tentukan opsi konfigurasi runtime di bagian configProperties dari file runtimeconfig.json . Bagian ini memiliki formulir:

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

Contoh [appname].runtimeconfig.json file

Jika Anda menempatkan opsi dalam file JSON output, sarangkan di bawah runtimeOptions properti .

{
  "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
    }
  }
}

Contoh file runtimeconfig.template.json

Jika Anda menempatkan opsi dalam file JSON templat, hilangkan runtimeOptions properti .

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

Properti MSBuild

Beberapa opsi konfigurasi runtime dapat diatur menggunakan properti MSBuild dalam file .csproj atau .vbproj dari proyek .NET Core bergaya SDK. Properti MSBuild lebih diutamakan daripada opsi yang diatur dalam file runtimeconfig.template.json .

Berikut adalah contoh file proyek bergaya SDK dengan properti MSBuild untuk mengonfigurasi perilaku run-time:

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

Properti MSBuild untuk mengonfigurasi perilaku run-time dicatat dalam artikel individual untuk setiap area, misalnya, pengumpulan sampah. Mereka juga tercantum di bagian Konfigurasi runtime dari referensi properti MSBuild untuk proyek bergaya SDK.

Variabel lingkungan

Variabel lingkungan dapat digunakan untuk menyediakan beberapa informasi konfigurasi runtime. Mengonfigurasi opsi run-time dengan menggunakan variabel lingkungan menerapkan pengaturan ke semua aplikasi .NET Core. Kenop konfigurasi yang ditentukan sebagai variabel lingkungan umumnya memiliki awalan DOTNET_.

Catatan

.NET 6 menstandarkan pada awalan DOTNET_ alih-alih COMPlus_ untuk variabel lingkungan yang mengonfigurasi perilaku run-time .NET. Namun, awalan COMPlus_ akan terus berfungsi. Jika Anda menggunakan versi runtime .NET sebelumnya, Anda masih harus menggunakan COMPlus_ awalan untuk variabel lingkungan.

Anda dapat menentukan variabel lingkungan dari Windows Panel Kontrol, di baris perintah, atau secara terprogram dengan memanggil Environment.SetEnvironmentVariable(String, String) metode pada sistem berbasis Windows dan Unix.

Contoh berikut menunjukkan cara mengatur variabel lingkungan di baris perintah:

# Windows
set DOTNET_GCRetainVM=1

# Powershell
$env:DOTNET_GCRetainVM="1"

# Unix
export DOTNET_GCRetainVM=1

Lihat juga