A .NET-futtatókörnyezet konfigurációs beállításai

A .NET 5+ (beleértve a .NET Core-verziókat) támogatja a konfigurációs fájlok és környezeti változók használatát a .NET-alkalmazások futásidőben történő viselkedésének konfigurálásához.

Megjegyzés

A jelen szakaszban található cikkek a .NET-futtatókörnyezet konfigurálását érintik. Ha a .NET Core 3.1-re vagy újabb verzióra migrál, és a app.config fájl helyett keres helyettesítő megoldást, vagy ha egyszerűen csak egyéni konfigurációs értékeket szeretne használni a .NET-alkalmazásban, tekintse meg a Microsoft.Extensions.Configuration.ConfigurationBuilder .NET osztályát és konfigurációját.

Az alábbi beállítások használata vonzó lehetőség, ha:

  • Az alkalmazás forráskódját nem Ön birtokolja vagy szabályozza, ezért nem tudja programozott módon konfigurálni.
  • Az alkalmazás több példánya fut egyszerre egyetlen rendszeren, és ezeket az optimális teljesítmény érdekében szeretné konfigurálni.

A .NET a következő mechanizmusokat biztosítja a .NET-futtatókörnyezet viselkedésének konfigurálásához:

Tipp

Ha környezeti változóval konfigurál egy beállítást, az az összes .NET-alkalmazásra alkalmazza a beállítást. Ha a runtimeconfig.json fájlban vagy a projektfájlban konfigurál egy beállítást, az csak az adott alkalmazásra alkalmazza a beállítást.

Bizonyos konfigurációs értékek programozott módon is beállíthatók a AppContext.SetSwitch metódus meghívásával.

A dokumentáció jelen szakaszában található cikkek kategóriák szerint vannak rendezve, például hibakeresés és szemétgyűjtés szerint. Ahol alkalmazható, a runtimeconfig.json fájlok, az MSBuild tulajdonságok, a környezeti változók és a kereszthivatkozások esetében app.config fájlok .NET-keretrendszer projektekhez.

runtimeconfig.json

A projekt létrehozásakor a kimeneti könyvtárban létre fog hozni egy [appname].runtimeconfig.json fájlt. Ha egy runtimeconfig.template.json fájl ugyanabban a mappában található, mint a projektfájl, a benne található konfigurációs beállítások be lesznek szúrva az [appname].runtimeconfig.json fájlba. Ha saját maga készíti el az alkalmazást, adja meg a konfigurációs beállításokat a runtimeconfig.template.json fájlban. Ha csak az alkalmazást futtatja, szúrja be őket közvetlenül az [appname].runtimeconfig.json fájlba.

Megjegyzés

  • Az [appname].runtimeconfig.json fájl felül lesz írva a következő buildeken.
  • Ha az alkalmazás OutputType nem az, és azt szeretné, hogy a konfigurációs beállításokat a runtimeconfig.template.json fájlból az [appname].runtimeconfig.json fájlba másolja, explicit módon be kell állítania GenerateRuntimeConfigurationFilestrue a projektfájlbanExe. A runtimeconfig.json fájlt igénylő alkalmazások esetében ez a tulajdonság alapértelmezés szerint a következő.true

Adja meg a futtatókörnyezet konfigurációs beállításait a runtimeconfig.json fájlok configProperties szakaszában. Ebben a szakaszban a következő űrlap található:

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

Példa : [appname].runtimeconfig.json fájl

Ha a kimeneti JSON-fájlba helyezi a beállításokat, ágyazhatja be őket a runtimeOptions tulajdonság alá.

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

Példa runtimeconfig.template.json fájlra

Ha a beállításokat a sablon JSON-fájljában helyezi el, hagyja ki a tulajdonságot runtimeOptions .

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

MSBuild tulajdonságok

A futtatókörnyezet egyes konfigurációs beállításai az SDK-stílusú .NET Core-projektek .csproj vagy .vbproj fájljában található MSBuild tulajdonságok használatával adhatók meg. Az MSBuild tulajdonságok elsőbbséget élveznek a runtimeconfig.template.json fájlban megadott beállítási lehetőségekkel szemben.

Íme egy példa SDK-stílusú projektfájl MSBuild tulajdonságokkal a futásidejű viselkedés konfigurálásához:

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

A futásidejű viselkedés konfigurálására szolgáló MSBuild tulajdonságokat az egyes területekre vonatkozó cikkek, például a szemétgyűjtés ismertetik. Ezek az SDK-stílusú projektek MSBuild tulajdonságokra vonatkozó referencia futásidejű konfigurációs szakaszában is szerepelnek.

Környezeti változók

A környezeti változók a futtatókörnyezet konfigurációs információinak megadására használhatók. A futásidejű beállítás környezeti változóval történő konfigurálása minden .NET Core-alkalmazásra alkalmazza a beállítást. A környezeti változókként megadott konfigurációs gombok általában DOTNET_ előtaggal rendelkeznek.

Megjegyzés

A .NET 6 szabványosítja az előtagot DOTNET_ a .NET futásidejű viselkedését konfiguráló környezeti változók helyett COMPlus_ . Az COMPlus_ előtag azonban továbbra is működni fog. Ha a .NET-futtatókörnyezet egy korábbi verzióját használja, akkor is használja az előtagot a COMPlus_ környezeti változókhoz.

Környezeti változókat definiálhat a Windows Vezérlőpult parancssorból, vagy programozott módon is, ha a metódust Environment.SetEnvironmentVariable(String, String) Windows és Unix-alapú rendszereken is meghívja.

Az alábbi példák bemutatják, hogyan állíthat be egy környezeti változót a parancssorban:

# Windows
set DOTNET_GCRetainVM=1

# Powershell
$env:DOTNET_GCRetainVM="1"

# Unix
export DOTNET_GCRetainVM=1

Lásd még