Ustawienia konfiguracji środowiska uruchomieniowego .NET
Program .NET 5+ (w tym wersje programu .NET Core) obsługuje używanie plików konfiguracji i zmiennych środowiskowych do konfigurowania zachowania aplikacji .NET w czasie działania.
Uwaga
Artykuły w tej sekcji dotyczą konfiguracji samego środowiska uruchomieniowego .NET. Jeśli migrujesz do programu .NET Core 3.1 lub nowszego i szukasz zamiennika pliku app.configlub po prostu chcesz użyć niestandardowych wartości konfiguracji w aplikacji .NET, zobacz klasę i konfigurację na platformie .NET.
Użycie tych ustawień jest atrakcyjną opcją, jeśli:
- Nie jesteś właścicielem ani nie kontrolujesz kodu źródłowego aplikacji, dlatego nie możesz go skonfigurować programowo.
- Wiele wystąpień aplikacji działa w tym samym czasie w jednym systemie i chcesz skonfigurować każde z nich w celu uzyskania optymalnej wydajności.
Program .NET udostępnia następujące mechanizmy konfigurowania zachowania środowiska uruchomieniowego .NET:
Porada
Skonfigurowanie opcji przy użyciu zmiennej środowiskowej powoduje zastosowanie ustawienia do wszystkich aplikacji .NET. Skonfigurowanie opcji w pliku runtimeconfig.json lub pliku projektu powoduje zastosowanie ustawienia tylko do tej aplikacji.
Niektóre wartości konfiguracji można również ustawić programowo, wywołując AppContext.SetSwitch metodę .
Artykuły w tej sekcji dokumentacji są zorganizowane według kategorii, na przykład debugowania iwyrzucania elementów bezużytecznych. Tam, gdzie ma to zastosowanie, opcje konfiguracji są wyświetlane dla plików runtimeconfig.json, właściwości MSBuild, zmiennych środowiskowych i, w przypadku odsyłaczy ,app.config plików dla .NET Framework projektów.
runtimeconfig.json
Podczas tworzyć projekt w katalogu wyjściowym jest generowany plik [appname].runtimeconfig.json . Jeśli plik runtimeconfig.template.json istnieje w tym samym folderze co plik projektu, wszystkie opcje konfiguracji, które zawiera, zostaną wstawione do pliku [appname].runtimeconfig.json . Jeśli samodzielnie konfigurowasz aplikację, umieść wszystkie opcje konfiguracji w pliku runtimeconfig.template.json . Jeśli właśnie uruchamiasz aplikację, wstaw je bezpośrednio do pliku [appname].runtimeconfig.json .
Uwaga
- Plik [appname].runtimeconfig.json zostanie zastąpiony w kolejnych kompilacjach.
- Jeśli aplikacja nie jest i chcesz, aby opcje konfiguracji zostały skopiowane z
OutputType
do plikuExe
,GenerateRuntimeConfigurationFiles
true
musisz jawnie ustawić wartość na w pliku projektu.OutputType
Exe
W przypadku aplikacji, które wymagają pliku runtimeconfig.json , wartość domyślna tej właściwości to .
Określ opcje konfiguracji środowiska uruchomieniowego w sekcji configProperties plików runtimeconfig.json . Ta sekcja ma postać:
"configProperties": {
"config-property-name1": "config-value1",
"config-property-name2": "config-value2"
}
Przykładowy plik [appname].runtimeconfig.json
Jeśli umieszczasz opcje w wyjściowym pliku JSON, zagnieżdż je we właściwości runtimeOptions
.
{
"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
}
}
}
Przykładowy plik runtimeconfig.template.json
Jeśli umieszczasz opcje w pliku JSON szablonu, pomiń właściwość runtimeOptions
.
{
"configProperties": {
"System.GC.Concurrent": false,
"System.Threading.ThreadPool.MinThreads": "4",
"System.Threading.ThreadPool.MaxThreads": "25"
}
}
właściwości programu MSBuild
Niektóre opcje konfiguracji środowiska uruchomieniowego można ustawić przy użyciu MSBuild w pliku csproj lub vbproj projektów .NET Core w stylu zestawu SDK. MSBuild mają pierwszeństwo przed opcjami ustawionymi w pliku runtimeconfig.template.json.
Oto przykładowy plik projektu w stylu zestawu SDK z MSBuild właściwościami do konfigurowania zachowania w czasie działania:
<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 dotyczące konfigurowania zachowania w czasie działania są zanotowane w poszczególnych artykułach dla każdego obszaru, na przykład w przypadku wyrzucania elementów bezużytecznych. Są one również wymienione w sekcji Konfiguracja środowiska uruchomieniowego w MSBuild odwołania do właściwości dla projektów w stylu zestawu SDK.
Zmienne środowiskowe
Zmienne środowiskowe mogą służyć do dostarczania niektórych informacji o konfiguracji środowiska uruchomieniowego. Skonfigurowanie opcji środowiska uruchomieniowego przy użyciu zmiennej środowiskowej powoduje zastosowanie ustawienia do wszystkich aplikacji .NET Core. Pokrętła konfiguracji określone jako zmienne środowiskowe zwykle mają prefiks DOTNET_.
Uwaga
Program .NET 6 standaryzuje prefiks DOTNET_
, a nie COMPlus_
zmienne środowiskowe, które konfigurują zachowanie środowiska uruchomieniowego .NET. Jednak prefiks COMPlus_
będzie nadal działać. Jeśli używasz poprzedniej wersji środowiska uruchomieniowego .NET, COMPlus_
nadal należy używać prefiksu dla zmiennych środowiskowych.
Zmienne środowiskowe można definiować z Windows Panel sterowania wiersza polecenia lub programowo, Environment.SetEnvironmentVariable(String, String) wywołując metodę zarówno w systemach Windows, jak i Unix.
Poniższe przykłady pokazują, jak ustawić zmienną środowiskową w wierszu polecenia:
# Windows
set DOTNET_GCRetainVM=1
# Powershell
$env:DOTNET_GCRetainVM="1"
# Unix
export DOTNET_GCRetainVM=1