Compartilhar via


Configurações de runtime do .NET

O .NET fornece os seguintes mecanismos para configurar o comportamento do runtime do .NET:

Mecanismo Anotações
O arquivoruntimeconfig.json Aplica a configuração a um aplicativo específico. Use esse arquivo se várias instâncias do aplicativo forem executadas ao mesmo tempo em um único sistema e quiser configurar cada uma para um desempenho ideal.
Propriedades do MSBuild Aplica a configuração a um aplicativo específico. As propriedades do MSBuild têm precedência sobre as configurações em runtimeconfig.json.
Variáveis de ambiente Aplica a configuração a todos os aplicativos .NET.

Alguns valores de configuração também podem ser definidos programaticamente chamando o AppContext.SetSwitch método.

Observação

Os artigos nesta seção dizem respeito à configuração do próprio runtime do .NET. Se você estiver migrando um aplicativo do .NET Framework para o .NET e estiver procurando uma substituição para o arquivo app.config , consulte Modernizar após a atualização para o .NET. Para obter informações sobre como fornecer valores de configuração personalizados para aplicativos .NET, consulte Configuração no .NET.

Os artigos nesta seção da documentação são organizados por categoria, por exemplo, depuração e coleta de lixo. Quando aplicável, as opções de configuração são mostradas para arquivos runtimeconfig.json , propriedades do MSBuild, variáveis de ambiente e, para referência cruzada, app.config arquivos para projetos do .NET Framework.

runtimeconfig.json

Quando um projeto é criado, um arquivo [appname].runtimeconfig.json é gerado no diretório de saída. Se houver um arquivo runtimeconfig.template.json na mesma pasta que o arquivo de projeto, todas as opções de configuração que ele contiver serão inseridas no arquivo [appname].runtimeconfig.json . Se você estiver criando o aplicativo por conta própria, coloque as opções de configuração no arquivo runtimeconfig.template.json . Se você estiver apenas executando o aplicativo, insira-o diretamente no arquivo [appname].runtimeconfig.json .

Observação

  • O arquivo [appname].runtimeconfig.json será substituído em builds subsequentes.
  • Se o OutputType do seu aplicativo não for Exe e você quiser que as opções de configuração sejam copiadas de runtimeconfig.template.json para [appname].runtimeconfig.json, você deve definir explicitamente GenerateRuntimeConfigurationFiles para true no arquivo do seu projeto. Para aplicativos que exigem um arquivo runtimeconfig.json , essa propriedade usa como padrão true.

Especifique as opções de configuração de runtime na seção configProperties do arquivo runtimeconfig.json ou runtimeconfig.template.json . Esta seção tem o formulário:

"configProperties": {
  "config-property-name1": "config-value1",
  "config-property-name2": "config-value2"
}

Exemplo, arquivo [appname].runtimeconfig.json

Se você estiver colocando as opções no arquivo JSON de saída, aninha-as sob a propriedade 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
    }
  }
}

Exemplo runtimeconfig.template.json arquivo

Se você estiver colocando as opções no arquivo JSON de modelo, omita a propriedade runtimeOptions.

{
  "configProperties": {
    "System.Globalization.UseNls": true,
    "System.Net.DisableIPv6": true,
    "System.GC.Concurrent": false,
    "System.Threading.ThreadPool.MinThreads": "4",
    "System.Threading.ThreadPool.MaxThreads": "25"
  }
}

Propriedades do MSBuild

Algumas opções de configuração de runtime podem ser definidas usando as propriedades do MSBuild no arquivo .csproj ou .vbproj de projetos .NET no estilo SDK. As propriedades do MSBuild têm precedência sobre as opções definidas no arquivo runtimeconfig.template.json .

Para configurações de runtime que não têm uma propriedade específica do MSBuild, você pode usar o item MSBuild RuntimeHostConfigurationOption. Use o nome da configuração runtimeconfig.json como o valor do atributo Include.

Aqui está um exemplo de arquivo de projeto no estilo SDK com propriedades do MSBuild para configurar o comportamento do runtime do .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>

As propriedades do MSBuild para configurar o comportamento do runtime são indicadas nos artigos individuais de cada área, por exemplo, coleta de lixo. Também estão listados na seção Configuração do runtime da referência de propriedades MSBuild para projetos no estilo SDK.

Variáveis de ambiente

As variáveis de ambiente podem ser usadas para fornecer algumas informações de configuração de runtime. Botões de configuração especificados como variáveis de ambiente geralmente têm o prefixo DOTNET_. (Para configuração de runtime do .NET Framework, use o COMPlus_ prefixo em vez disso.)

Você pode definir variáveis de ambiente do Painel de Controle do Windows, na linha de comando ou programaticamente chamando o Environment.SetEnvironmentVariable(String, String) método em sistemas baseados em Windows e Unix.

Os exemplos a seguir mostram como definir uma variável de ambiente na linha de comando:

# Windows
set DOTNET_GCRetainVM=1

# Powershell
$env:DOTNET_GCRetainVM="1"

# Unix
export DOTNET_GCRetainVM=1

Consulte também