Partilhar via


Definições de configuração do tempo de execução do .NET

O .NET fornece os seguintes mecanismos para configurar o comportamento do tempo de execução do .NET:

Mecanismo Observações
O arquivoruntimeconfig.json Aplica a configuração a um aplicativo específico. Use esse arquivo se várias instâncias do seu aplicativo forem executadas ao mesmo tempo em um único sistema e você quiser configurar cada uma delas para obter o melhor desempenho.
propriedades do MSBuild Aplica a configuração a um aplicativo específico. As propriedades do MSBuild têm precedência sobre as configurações no 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 tempo de execução do .NET. Se você estiver migrando um aplicativo do .NET Framework para o .NET e estiver procurando um substituto para o arquivo app.config, consulte Modernizar após atualizar 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. Onde aplicável, as opções de configuração são apresentadas para os arquivos runtimeconfig.json, propriedades do MSBuild, variáveis de ambiente e arquivos app.config para projetos do .NET Framework.

runtimeconfig.json

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

Observação

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

Especifique as opções de configuração de tempo de execução na seção configProperties do arquivo runtimeconfig.json ou runtimeconfig.template.json . Esta secção tem a forma:

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

Exemplo [appname] arquivo.runtimeconfig.json

Se você estiver colocando as opções no arquivo JSON de saída , aninha-as sob a runtimeOptions propriedade.

{
  "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 de arquivo runtimeconfig.template.json

Se estiver a colocar as opções no ficheiro JSON do 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 tempo de execução podem ser definidas usando propriedades 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 definições de configuração de tempo de execução que não têm uma propriedade MSBuild específica, você pode usar o RuntimeHostConfigurationOption item MSBuild em vez disso. Use o nome da configuração runtimeconfig.json como o valor do Include atributo.

Aqui está um exemplo de arquivo de projeto no estilo SDK com propriedades MSBuild para configurar o comportamento do tempo de execução 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 tempo de execução são anotadas nos artigos individuais de cada área, por exemplo, coleta de lixo. Eles também estão listados na seção Configuração de tempo de execução da referência de propriedades do 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 tempo de execução. Os botões de configuração especificados como variáveis de ambiente geralmente têm o prefixo DOTNET_.

Observação

O .NET 6 padroniza o uso do prefixo DOTNET_ em vez de COMPlus_ para variáveis de ambiente que configuram o comportamento do tempo de execução do .NET. No entanto, o prefixo COMPlus_ continuará a funcionar. Se você estiver usando uma versão anterior do tempo de execução do .NET, ainda deverá usar o prefixo COMPlus_ para variáveis de ambiente.

Você pode definir variáveis de ambiente a partir 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

Ver também