Delen via


Configuratie-instellingen voor .NET-runtime

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

Mechanisme Opmerkingen
Het runtimeconfig.json-bestand Hiermee past u de instelling toe op een specifieke app. Gebruik dit bestand als meerdere exemplaren van uw app tegelijkertijd worden uitgevoerd op één systeem en u deze wilt configureren voor optimale prestaties.
MSBuild-eigenschappen Hiermee past u de instelling toe op een specifieke app. MSBuild-eigenschappen hebben voorrang op instellingen in runtimeconfig.json.
Omgevingsvariabelen Hiermee past u de instelling toe op alle .NET-apps. Vanaf .NET 9 hebben omgevingsvariabelen voorrang op zowel MSBuild-eigenschappen alsruntimeconfig.json-instellingen . Zie Omgevingsvariabelen hebben voorrang in de configuratie-instellingen van de app-runtime voor meer informatie.

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

Opmerking

De artikelen in deze sectie hebben betrekking op de configuratie van de .NET-runtime zelf. Als u een app migreert van .NET Framework naar .NET en op zoek bent naar een vervanging voor het app.config-bestand , raadpleegt u Moderniseren na een upgrade naar .NET. Zie Configuratie in .NET voor informatie over het opgeven van aangepaste configuratiewaarden voor .NET-apps.

De artikelen in deze sectie 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 kruisverwijzingen,app.config bestanden voor .NET Framework-projecten.

runtimeconfig.json

Wanneer een project is gebouwd, 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 die het bestand bevat, ingevoegd in het bestand [appname].runtimeconfig.json bestand. Als u de app zelf bouwt, plaatst u configuratieopties in het runtimeconfig.template.json-bestand . Als u de app gebruikt, voegt u ze direct toe aan het bestand [appname].runtimeconfig.json.

Opmerking

  • Het bestand [appname].runtimeconfig.json wordt overschreven op volgende builds.
  • Als uw app OutputType niet Exe is en u wilt dat configuratieopties worden gekopieerd van runtimeconfig.template.json naar [appname].runtimeconfig.json, moet u expliciet instellen GenerateRuntimeConfigurationFilestrue op 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 het runtimeconfig.json - of runtimeconfig.template.json-bestand . Deze sectie heeft het formulier:

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

Voorbeeld van [appname].runtimeconfig.json-bestand

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

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

Voorbeeld van runtimeconfig.template.json-bestand

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

{
  "configProperties": {
    "System.Globalization.UseNls": true,
    "System.Net.DisableIPv6": true,
    "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 .csproj - of .vbproj-bestand van .NET-projecten in SDK-stijl. MSBuild-eigenschappen hebben voorrang op opties die zijn ingesteld in het runtimeconfig.template.json-bestand .

Voor runtime-configuratie-instellingen die geen specifieke MSBuild-eigenschap hebben, kunt u in plaats daarvan het RuntimeHostConfigurationOption MSBuild-item gebruiken. Gebruik de naam van de instelling runtimeconfig.json als de waarde van het Include kenmerk.

Hier volgt een voorbeeld van een SDK-projectbestand met MSBuild-eigenschappen voor het configureren van het gedrag van de .NET-runtime:

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

MSBuild-eigenschappen voor het configureren van het gedrag van de runtime worden vermeld in de afzonderlijke artikelen voor elk gebied, bijvoorbeeld garbagecollection. Ze worden ook vermeld in de sectie Runtime-configuratie van de naslaginformatie over MSBuild-eigenschappen voor SDK-projecten.

Omgevingsvariabelen

Omgevingsvariabelen kunnen worden gebruikt om bepaalde runtimeconfiguratiegegevens op te geven. Configuratieknoppen die zijn opgegeven als omgevingsvariabelen, hebben over het algemeen het voorvoegsel DOTNET_. (Voor .NET Framework Runtime-configuratie gebruikt u in plaats daarvan het COMPlus_ voorvoegsel.)

Opmerking

Vanaf .NET 9 hebben omgevingsvariabelen voorrang op zowel MSBuild-eigenschappen alsruntimeconfig.json-instellingen . Zie Omgevingsvariabelen hebben voorrang in de app-runtime configuratie-instellingen voor meer informatie over deze ingrijpende wijziging.

U kunt omgevingsvariabelen definiëren vanuit het Configuratiescherm van Windows, 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