Share via


Configuratie-instellingen voor .NET Runtime

.NET 5+ (inclusief .NET Core-versies) ondersteunt het gebruik van configuratiebestanden en omgevingsvariabelen om het gedrag van .NET-toepassingen tijdens runtime te configureren.

Notitie

De artikelen in deze sectie hebben betrekking op de configuratie van de .NET Runtime zelf. Als u migreert naar .NET Core 3.1 of hoger en op zoek bent naar een vervanging voor het app.config-bestand , of als u gewoon een manier wilt om aangepaste configuratiewaarden in uw .NET-app te gebruiken, raadpleegt u de Microsoft.Extensions.Configuration.ConfigurationBuilder klasse en configuratie in .NET.

Het gebruik van deze instellingen is een aantrekkelijke optie als:

  • U hebt geen eigenaar of beheer van de broncode voor een toepassing en kunt deze daarom niet programmatisch configureren.
  • Meerdere exemplaren van uw toepassing worden tegelijkertijd uitgevoerd op één systeem en u wilt elk exemplaar configureren voor optimale prestaties.

.NET biedt de volgende mechanismen voor het configureren van gedrag van de .NET-runtime:

Tip

Als u een optie configureert met behulp van een omgevingsvariabele, wordt de instelling toegepast op alle .NET-apps. Als u een optie configureert in het runtimeconfig.json - of projectbestand, wordt de instelling alleen op die toepassing toegepast.

Sommige configuratiewaarden kunnen ook programmatisch worden ingesteld door de AppContext.SetSwitch methode aan te roepen.

De artikelen in dit gedeelte van de documentatie zijn ingedeeld op categorie, bijvoorbeeld foutopsporing en garbagecollection. Indien van toepassing worden configuratieopties weergegeven voor runtimeconfig.json-bestanden, MSBuild-eigenschappen, omgevingsvariabelen en, voor kruisverwijzing, app.config bestanden voor .NET Framework projecten.

runtimeconfig.json

Wanneer een project is gemaakt, wordt er een [appname].runtimeconfig.json-bestand gegenereerd in de uitvoermap. Als er een runtimeconfig.template.json-bestand bestaat in dezelfde map als het projectbestand, worden alle configuratieopties ingevoegd in het bestand [appname].runtimeconfig.json . Als u de app zelf bouwt, plaatst u alle configuratieopties in het bestand runtimeconfig.template.json . Als u de app zojuist uitvoert, voegt u deze rechtstreeks in het bestand [appname].runtimeconfig.json in.

Notitie

  • Het bestand [appname].runtimeconfig.json wordt overschreven op volgende builds.
  • Als de app niet OutputTypeExe is en u wilt dat configuratieopties worden gekopieerd van runtimeconfig.template.json naar [appname].runtimeconfig.json, moet u expliciet instellen GenerateRuntimeConfigurationFiles op true in uw projectbestand. Voor apps waarvoor een runtimeconfig.json-bestand is vereist, wordt deze eigenschap standaard ingesteld op true.

Geef runtimeconfiguratieopties op in de sectie configProperties van de runtimeconfig.json-bestanden . Deze sectie heeft het formulier:

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

Voorbeeld van het bestand [appname].runtimeconfig.json

Als u de opties in het JSON-uitvoerbestand plaatst, nestt u deze onder de runtimeOptions eigenschap.

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

Voorbeeld van runtimeconfig.template.json-bestand

Als u de opties in het JSON-sjabloonbestand plaatst, laat u de runtimeOptions eigenschap weg.

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

MSBuild-eigenschappen

Sommige runtimeconfiguratieopties kunnen worden ingesteld met behulp van MSBuild-eigenschappen in het bestand .csproj of .vbproj van .NET Core-projecten in SDK-stijl. MSBuild-eigenschappen hebben voorrang op opties die zijn ingesteld in het bestand runtimeconfig.template.json .

Hier volgt een voorbeeld van een SDK-projectbestand met MSBuild-eigenschappen voor het configureren van runtimegedrag:

<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-eigenschappen voor het configureren van runtimegedrag worden vermeld in de afzonderlijke artikelen voor elk gebied, bijvoorbeeld garbagecollection. Ze worden ook vermeld in de sectie Runtime-configuratie van de MSBuild-eigenschappenverwijzing voor SDK-projecten.

Omgevingsvariabelen

Omgevingsvariabelen kunnen worden gebruikt om bepaalde runtimeconfiguratiegegevens op te geven. Als u een runtime-optie configureert met behulp van een omgevingsvariabele, wordt de instelling toegepast op alle .NET Core-apps. Configuratieknoppen die zijn opgegeven als omgevingsvariabelen, hebben over het algemeen het voorvoegsel DOTNET_.

Notitie

.NET 6 standaardiseert het voorvoegsel DOTNET_ in plaats van COMPlus_ voor omgevingsvariabelen die .NET-runtimegedrag configureren. Het COMPlus_ voorvoegsel blijft echter werken. Als u een eerdere versie van de .NET-runtime gebruikt, moet u nog steeds het COMPlus_ voorvoegsel voor omgevingsvariabelen gebruiken.

U kunt omgevingsvariabelen definiëren vanuit de Windows Configuratiescherm, op de opdrachtregel of programmatisch door de Environment.SetEnvironmentVariable(String, String) methode aan te roepen op zowel Windows- als Unix-systemen.

In de volgende voorbeelden ziet u hoe u een omgevingsvariabele instelt op de opdrachtregel:

# Windows
set DOTNET_GCRetainVM=1

# Powershell
$env:DOTNET_GCRetainVM="1"

# Unix
export DOTNET_GCRetainVM=1

Zie ook