Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
.NET предоставляет следующие механизмы настройки поведения среды выполнения .NET:
| Механизм | Примечания. |
|---|---|
| Файлruntimeconfig.json | Применяет параметр к конкретному приложению. Используйте этот файл, если несколько экземпляров приложения выполняются одновременно в одной системе, и вы хотите настроить каждую из них для оптимальной производительности. |
| свойства MSBuild | Применяет параметр к конкретному приложению. Свойства MSBuild имеют приоритет над параметрами в runtimeconfig.json. |
| переменные среды | Применяет этот параметр ко всем приложениям .NET. Начиная с .NET 9 переменные среды имеют приоритет над свойствами MSBuild и параметрамиruntimeconfig.json . Дополнительные сведения см. в статье Переменные среды имеют приоритет в настройках конфигурации среды выполнения приложения. |
Некоторые значения конфигурации также можно задать программным способом AppContext.SetSwitch , вызвав метод.
Замечание
Статьи, приведенные в этом разделе, касаются конфигурации самой среды выполнения .NET. Если вы переносите приложение из .NET Framework в .NET и ищете замену файлаapp.config , см. статью "Модернизация после обновления до .NET". Сведения о предоставлении пользовательских значений конфигурации приложениям .NET см. в разделе "Конфигурация" в .NET.
Статьи в этом разделе документации организованы по категориям, например отладке и сборке мусора. При необходимости параметры конфигурации отображаются для файловruntimeconfig.json , свойств MSBuild, переменных среды и для перекрестной ссылки app.config файлов для проектов .NET Framework.
runtimeconfig.json
При построении проекта в выходном каталоге создается файл [appname],.runtimeconfig.json . Если файлruntimeconfig.template.json существует в той же папке, что и файл проекта, все параметры конфигурации, содержащиеся в нем, вставляются в файл .runtimeconfig.json[appname] . Если вы создаете приложение самостоятельно, поместите все параметры конфигурации в файлruntimeconfig.template.json . Если вы только что запускаете приложение, вставьте их непосредственно в файл [appname].runtimeconfig.json .
Замечание
- Файл [appname].runtimeconfig.json будет перезаписан при последующих сборках.
- Если ваш
OutputTypeприложения неExeи вы хотите, чтобы параметры конфигурации были скопированы из runtimeconfig.template.json в [имя_приложения].runtimeconfig.json, необходимо явно задатьGenerateRuntimeConfigurationFilesв проектном файле наtrue. Для приложений, которым требуется файлruntimeconfig.json, это свойство по умолчанию устанавливается какtrue.
Укажите параметры конфигурации среды выполнения в разделе configProperties файла runtimeconfig.json или runtimeconfig.template.json . В этом разделе есть форма:
"configProperties": {
"config-property-name1": "config-value1",
"config-property-name2": "config-value2"
}
Пример [имя_приложения].runtimeconfig.json файла
Если вы помещаете параметры в выходной JSON-файл, их следует вложить под runtimeOptions свойство.
{
"runtimeOptions": {
"tfm": "net8.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "8.0.0"
},
"configProperties": {
"System.Globalization.UseNls": true,
"System.Net.DisableIPv6": true,
"System.GC.Concurrent": false,
"System.Threading.ThreadPool.MinThreads": 4,
"System.Threading.ThreadPool.MaxThreads": 25
}
}
}
Пример файла runtimeconfig.template.json
Если вы помещаете параметры в JSON-файл шаблона, исключитеruntimeOptions свойство.
{
"configProperties": {
"System.Globalization.UseNls": true,
"System.Net.DisableIPv6": true,
"System.GC.Concurrent": false,
"System.Threading.ThreadPool.MinThreads": "4",
"System.Threading.ThreadPool.MaxThreads": "25"
}
}
Свойства MSBuild
Некоторые параметры конфигурации среды выполнения можно задать с помощью свойств MSBuild в файле .csproj или .vbproj проектов .NET в стиле SDK. Свойства MSBuild имеют приоритет над параметрами, заданными в файлеruntimeconfig.template.json .
Для параметров конфигурации среды выполнения, которые не имеют определенного свойства MSBuild, вместо этого можно использовать RuntimeHostConfigurationOption элемент MSBuild.
Используйте имя параметра runtimeconfig.json в качестве значения атрибутаInclude.
Ниже приведен пример файла проекта в стиле SDK со свойствами MSBuild для настройки поведения среды выполнения .NET:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<PropertyGroup>
<ConcurrentGarbageCollection>false</ConcurrentGarbageCollection>
<ThreadPoolMinThreads>4</ThreadPoolMinThreads>
<ThreadPoolMaxThreads>25</ThreadPoolMaxThreads>
</PropertyGroup>
<ItemGroup>
<RuntimeHostConfigurationOption Include="System.Globalization.UseNls" Value="true" />
<RuntimeHostConfigurationOption Include="System.Net.DisableIPv6" Value="true" />
</ItemGroup>
</Project>
Свойства MSBuild для настройки поведения среды выполнения отмечаются в отдельных статьях для каждой области, например сборка мусора. Они также перечислены в разделе конфигурации среды выполнения справочника по свойствам MSBuild для проектов в стиле SDK.
Переменные среды
Переменные среды можно использовать для предоставления некоторых сведений о конфигурации среды выполнения. Ручки конфигурации, указанные в качестве переменных среды, обычно имеют префикс DOTNET_. (Для конфигурации среды выполнения .NET Framework вместо этого используйте префикс COMPlus_.)
Замечание
Начиная с .NET 9 переменные среды имеют приоритет над свойствами MSBuild и параметрамиruntimeconfig.json . Дополнительные сведения об этом важном изменении см. в статье "Переменные среды имеют приоритет в конфигурации среды выполнения приложения".
Переменные среды можно определить на панели управления Windows, в командной строке или программно, вызвав Environment.SetEnvironmentVariable(String, String) метод как в системах Windows, так и в Unix.
В следующих примерах показано, как задать переменную среды в командной строке:
# Windows
set DOTNET_GCRetainVM=1
# Powershell
$env:DOTNET_GCRetainVM="1"
# Unix
export DOTNET_GCRetainVM=1