.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. Этот раздел имеет следующий вид:
Некоторые параметры конфигурации времени выполнения можно задать с помощью свойств MSBuild в файле .csproj или .vbproj для проектов .NET Core типа SDK. Свойства MSBuild имеют приоритет над параметрами, заданными в файле runtimeconfig.template.json.
Ниже приведен пример файла проекта в стиле пакета SDK со свойствами MSBuild для настройки поведения во время выполнения:
Свойства 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