Share via


Konfigurationsinställningar för .NET Runtime

.NET 5+ (inklusive .NET Core-versioner) stöder användning av konfigurationsfiler och miljövariabler för att konfigurera beteendet för .NET-program vid körning.

Anteckning

Artiklarna i det här avsnittet handlar om konfiguration av själva .NET Runtime. Om du migrerar till .NET Core 3.1 eller senare och letar efter en ersättning för denapp.config filen, eller om du bara vill använda anpassade konfigurationsvärden i .NET-appen, kan du läsa klassen och konfigurationen Microsoft.Extensions.Configuration.ConfigurationBuilderi .NET.

Att använda de här inställningarna är ett attraktivt alternativ om:

  • Du äger eller styr inte källkoden för ett program och kan därför inte konfigurera den programmatiskt.
  • Flera instanser av ditt program körs samtidigt på ett enda system och du vill konfigurera var och en för optimal prestanda.

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

Tips

När du konfigurerar ett alternativ med hjälp av en miljövariabel tillämpas inställningen på alla .NET-appar. Om du konfigurerar ett alternativ i runtimeconfig.json - eller projektfilen tillämpas inställningen endast på det programmet.

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

Artiklarna i det här avsnittet i dokumentationen är ordnade efter kategori, till exempel felsökning och skräpinsamling. I förekommande fall visas konfigurationsalternativ för runtimeconfig.json-filer, MSBuild-egenskaper, miljövariabler och för korsreferenserapp.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 filen [appname].runtimeconfig.json . Om du skapar appen själv placerar du eventuella konfigurationsalternativ i filen runtimeconfig.template.json . Om du bara kör appen infogar du dem direkt i filen [appname].runtimeconfig.json .

Anteckning

  • Filen [appname].runtimeconfig.json skrivs över i efterföljande versioner.
  • Om appen inte OutputTypeExe är och du vill att konfigurationsalternativen ska kopieras från runtimeconfig.template.json till [appname].runtimeconfig.json må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 konfigurationsalternativ för körning i avsnittet configProperties i filerna runtimeconfig.json . Det här avsnittet har 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 kapslade du dem under runtimeOptions egenskapen .

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

Exempel på filen runtimeconfig.template.json

Om du placerar alternativen i JSON-mallfilen utelämnar runtimeOptions du egenskapen .

{
  "configProperties": {
    "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 .NET Core-projekt i SDK-format. MSBuild-egenskaper har företräde framför de alternativ som anges i filen runtimeconfig.template.json .

Här är ett exempel på en projektfil i SDK-format med MSBuild-egenskaper för att konfigurera körningsbeteende:

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

Miljövariabler

Miljövariabler kan användas för att ange viss konfigurationsinformation för körning. När du konfigurerar ett körningsalternativ med hjälp av en miljövariabel tillämpas inställningen på alla .NET Core-appar. Konfigurationsknappar som anges som miljövariabler har vanligtvis prefixet DOTNET_.

Anteckning

.NET 6 standardiserar på prefixet DOTNET_ i stället COMPlus_ för 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 prefixet COMPlus_ 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 på 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