Параметры конфигурации среды выполнения .NET
.NET Core 5 и более поздних версий (включая версии .NET Core) поддерживает использование файлов конфигурации и переменных среды для настройки поведения приложений .NET во время выполнения.
Примечание
Статьи в этом разделе касаются настройки среды выполнения .NET. Если вы выполняете миграцию на .NET Core 3,1 или более поздней версии и ищете замену файла app.config или если вы просто хотите использовать пользовательские значения конфигурации в приложении .NET, ознакомьтесь с классом и конфигурацией в .NET.
Использование этих параметров является привлекательным вариантом, если:
- Вы не владеете исходным кодом приложения или не можете управлять им, поэтому вы не можете задать соответствующие настройки программным способом.
- Вы одновременно запускаете несколько экземпляров приложения в одной системе и хотите настроить оптимальную производительность для каждого экземпляра.
.NET предоставляет следующие механизмы настройки поведения среды выполнения .NET:
Совет
Настройка параметра с помощью переменной среды применяет этот параметр ко всем приложениям .NET. Настройка параметра в файле runtimeconfig. JSON или проекта применяет параметр только к этому приложению.
Значения некоторых параметров конфигурации также можно задать программным способом, вызвав метод AppContext.SetSwitch.
Статьи в этом разделе документации упорядочены по категориям, например, отладка и сборка мусора. В соответствующих случаях параметры конфигурации отображаются для файлов runtimeconfig.json, свойств MSBuild, переменных среды и, для перекрестных ссылок, файлов app.config для проектов .NET Framework.
runtimeconfig.json
Если проект собран, в выходном каталоге создается файл [имя_приложения].runtimeconfig.json. Если файл runtimeconfig.template.json находится в той же папке, что и файл проекта, все параметры конфигурации, которые он содержит, добавляются в файл [имя_приложения].runtimeconfig.json. Если вы самостоятельно создаете приложение, разместите все параметры конфигурации в файле runtimeconfig.template.json. Если вы только запускаете приложение, вставьте их непосредственно в файл [имя_приложения].runtimeconfig.json.
Примечание
- Файл [имя_приложения].runtimeconfig.json будет перезаписан при последующих сборках.
- Если
OutputType
приложения не имеет значениеExe
и вы хотите скопировать параметры конфигурации изOutputType
вExe
, необходимо явно задать дляGenerateRuntimeConfigurationFiles
значениеtrue
в файле проекта. Для приложений, которым требуется файл runtimeconfig.json, это свойство по умолчанию имеет значение .
Параметры конфигурации времени выполнения следует указывать в файлах runtimeconfig.json в разделе configProperties. Этот раздел имеет следующий вид:
"configProperties": {
"config-property-name1": "config-value1",
"config-property-name2": "config-value2"
}
Пример файла [имя_приложения].runtimeconfig.json
Если вы помещаете параметры в выходной JSON-файл, вложите их в свойство 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
}
}
}
Пример файла runtimeconfig.template.json
Если вы помещаете параметры в шаблон JSON-файла, опустите свойство runtimeOptions
.
{
"configProperties": {
"System.GC.Concurrent": false,
"System.Threading.ThreadPool.MinThreads": "4",
"System.Threading.ThreadPool.MaxThreads": "25"
}
}
свойства MSBuild
Некоторые параметры конфигурации времени выполнения можно задать с помощью свойств MSBuild в файле .csproj или .vbproj для проектов .NET Core типа SDK. Свойства MSBuild имеют приоритет над параметрами, заданными в файле runtimeconfig.template.json.
Ниже приведен пример файла проекта в стиле пакета SDK со свойствами MSBuild для настройки поведения во время выполнения:
<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 для настройки поведения во время выполнения указаны в отдельных статьях для каждой области, например сборка мусора. Они также перечислены в разделе Свойства конфигурации среды выполнения в справочнике по свойствам MSBuild для проектов SDK.
Переменные среды
Переменные среды можно использовать для предоставления некоторых сведений о конфигурации времени выполнения. При настройке параметра времени выполнения с помощью переменной среды этот параметр будет применяться ко всем приложениям .NET Core. Элементы конфигурации, указанные в качестве переменных среды, обычно имеют префикс DOTNET_ .
Примечание
.NET 6 стандартизует префикс DOTNET_
вместо COMPlus_
для переменных среды, которые настраивают поведение .NET во время выполнения. Но префикс COMPlus_
будет и дальше работать. Если вы используете предыдущую версию среды выполнения .NET, следует и дальше использовать префикс COMPlus_
для переменных среды.
Переменные среды можно определить с помощью панели управления Windows, в командной строке или программным способом, вызвав метод Environment.SetEnvironmentVariable(String, String) в Windows и системах на основе Unix.
В следующих примерах показано, как задать переменную среды в командной строке:
# Windows
set DOTNET_GCRetainVM=1
# Powershell
$env:DOTNET_GCRetainVM="1"
# Unix
export DOTNET_GCRetainVM=1