Dela via


Konfigurationsinställningar för .NET-körning

.NET tillhandahåller följande mekanismer för att konfigurera beteendet för .NET-körningen:

Mekanism Noteringar
Filenruntimeconfig.json Tillämpar inställningen på en specifik app. Använd den här filen om flera instanser av din app körs samtidigt på ett enda system och du vill konfigurera var och en för optimal prestanda.
MSBuild-egenskaper Tillämpar inställningen på en specifik app. MSBuild-egenskaper har företräde framför inställningarna i runtimeconfig.json.
Miljövariabler Tillämpar inställningen på alla .NET-appar.

Vissa konfigurationsvärden kan också anges programmatiskt genom att anropa AppContext.SetSwitch metoden.

Anmärkning

Artiklarna i det här avsnittet handlar om konfiguration av själva .NET-körningen. Om du migrerar en app från .NET Framework till .NET och letar efter en ersättning för filenapp.config läser du Modernisera efter uppgradering till .NET. Information om hur du anger anpassade konfigurationsvärden för .NET-appar finns i Konfiguration i .NET.

Artiklarna i det här avsnittet i dokumentationen ordnas efter kategori, till exempel felsökning och skräpinsamling. I tillämpliga fall visas konfigurationsalternativ för runtimeconfig.json filer, MSBuild-egenskaper, miljövariabler och, för korsreferens, app.config filer för .NET Framework-projekt.

runtimeconfig.json

När ett projekt skapas genereras en [appname].runtimeconfig.json fil i utdatakatalogen. Om det finns en runtimeconfig.template.json fil i samma mapp som projektfilen infogas alla konfigurationsalternativ som den innehåller i [appname].runtimeconfig.json fil. Om du skapar appen själv lägger du alla konfigurationsalternativ i filenruntimeconfig.template.json . Om du bara kör appen infogar du dem direkt i filen [appname].runtimeconfig.json .

Anmärkning

  • Filen [appname].runtimeconfig.json skrivs över på efterföljande versioner.
  • Om appens OutputType inte Exe är och du vill att konfigurationsalternativ ska kopieras från runtimeconfig.template.json till [appname].runtimeconfig.jsonmåste du uttryckligen ange GenerateRuntimeConfigurationFiles till true i projektfilen. För appar som kräver en runtimeconfig.json fil är den här egenskapen som standard true.

Ange alternativ för körningskonfiguration i avsnittet configProperties i filen runtimeconfig.json eller runtimeconfig.template.json. Det här avsnittet innehåller formuläret:

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

Exempel [appname].runtimeconfig.json fil

Om du placerar alternativen i JSON-utdatafilen, ska de bli kapslade under egenskapen runtimeOptions.

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

Exempel på runtimeconfig.template.json fil

Om du placerar alternativen i JSON-mallfilenutelämnar du egenskapen 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-egenskaper

Vissa körningskonfigurationsalternativ kan anges med hjälp av MSBuild-egenskaper i .csproj - eller .vbproj-filen i SDK-liknande .NET-projekt. MSBuild-egenskaper har företräde framför de alternativ som anges i filenruntimeconfig.template.json .

För körningskonfigurationsinställningar som inte har en specifik MSBuild-egenskap kan du använda RuntimeHostConfigurationOption MSBuild-objektet i stället. Använd runtimeconfig.json inställningsnamnet som värdet för attributetInclude.

Här är ett exempel på en SDK-projektfil med MSBuild-egenskaper för att konfigurera beteendet för .NET-körningen:

<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-egenskaper för att konfigurera körningens beteende anges i de enskilda artiklarna för varje område, till exempel skräpinsamling. De visas också i avsnittet Körningskonfiguration i MSBuild-egenskapsreferensen för SDK-liknande projekt.

Miljövariabler

Miljövariabler kan användas för att tillhandahålla viss konfigurationsinformation vid körning. Konfigurationsknappar som anges som miljövariabler har vanligtvis prefixet DOTNET_.

Anmärkning

.NET 6 standardiserar på prefixet DOTNET_ i stället för COMPlus_ för miljövariabler som konfigurerar .NET-körningsbeteende. Prefixet COMPlus_ fortsätter dock att fungera. Om du använder en tidigare version av .NET-körningen bör du fortfarande använda COMPlus_-prefixet för miljövariabler.

Du kan definiera miljövariabler från Windows-kontrollpanelen, på kommandoraden eller programmatiskt genom att anropa Environment.SetEnvironmentVariable(String, String) metoden i både Windows- och Unix-baserade system.

I följande exempel visas hur du anger en miljövariabel på kommandoraden:

# Windows
set DOTNET_GCRetainVM=1

# Powershell
$env:DOTNET_GCRetainVM="1"

# Unix
export DOTNET_GCRetainVM=1

Se även