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
OutputType
Exe
är och du vill att konfigurationsalternativen ska kopieras från runtimeconfig.template.json till [appname].runtimeconfig.json måste du uttryckligen angeGenerateRuntimeConfigurationFiles
tilltrue
i projektfilen. För appar som kräver en runtimeconfig.json-fil är den här egenskapen som standardtrue
.
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