Поделиться через


Параметры конфигурации среды выполнения .NET

.NET предоставляет следующие механизмы настройки поведения среды выполнения .NET:

Механизм Примечания.
Файлruntimeconfig.json Применяет параметр к конкретному приложению. Используйте этот файл, если несколько экземпляров приложения выполняются одновременно в одной системе, и вы хотите настроить каждую из них для оптимальной производительности.
свойства MSBuild Применяет параметр к конкретному приложению. Свойства MSBuild имеют приоритет над параметрами в runtimeconfig.json.
переменные среды Применяет этот параметр ко всем приложениям .NET.

Некоторые значения конфигурации также можно задать программным способом 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 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

См. также