Compartilhar via


Suporte para variáveis de ambiente vazias

Foi adicionado suporte para poder definir uma variável de ambiente para a cadeia de caracteres vazia usando Environment.SetEnvironmentVariable(String, String). Como parte desse trabalho, o comportamento de definir as propriedades ProcessStartInfo.Environment e ProcessStartInfo.EnvironmentVariables foi alterado para ser consistente com o de Environment.SetEnvironmentVariable(String, String).

Comportamento anterior

Anteriormente:

  • Tanto Environment.SetEnvironmentVariable("TEST", string.Empty) quanto Environment.SetEnvironmentVariable("TEST", null) excluiu a variável de ambiente.
  • Tanto ProcessStartInfo.Environment["TEST"] = string.Empty quanto ProcessStartInfo.Environment["TEST"] = null definiu a variável de ambiente no processo filho como um valor vazio.

Novo comportamento

A partir do .NET 9:

  • Environment.SetEnvironmentVariable("TEST", string.Empty) define o valor da variável de ambiente como um valor vazio. O comportamento Environment.SetEnvironmentVariable("TEST", null) não é alterado, ou seja, ele ainda exclui a variável de ambiente.
  • ProcessStartInfo.Environment["TEST"] = null exclui a variável de ambiente. O comportamento ProcessStartInfo.Environment["TEST"] = string.Empty é inalterado, ou seja, ainda define a variável de ambiente como um valor vazio.

Versão introduzida

.NET 9 Preview 6

Tipo de alteração interruptiva

Esta é uma alteração comportamental.

Motivo da alteração

Antes dessa alteração, não era possível usar Environment.SetEnvironmentVariable(String, String) para definir uma variável de ambiente como um valor vazio, que é um valor de variável de ambiente válido em todas as plataformas com suporte.

Para excluir uma variável de ambiente usando Environment.SetEnvironmentVariable(String, String), altere seu código para passar null em vez de string.Empty como o argumento de valor.

Para definir a variável de ambiente como um valor vazio usando ProcessStartInfo.Environment ou ProcessStartInfo.EnvironmentVariables, altere o código para definir essas propriedades como string.Empty em vez de null.

APIs afetadas