支持空环境变量

添加了这项支持,以便能够使用 Environment.SetEnvironmentVariable(String, String) 将环境变量设置为空字符串。 作为这项工作的一部分,设置 ProcessStartInfo.EnvironmentProcessStartInfo.EnvironmentVariables 属性的行为已更改为与 Environment.SetEnvironmentVariable(String, String) 的行为一致。

旧行为

以前的行为:

  • Environment.SetEnvironmentVariable("TEST", string.Empty)Environment.SetEnvironmentVariable("TEST", null) 删除环境变量。
  • ProcessStartInfo.Environment["TEST"] = string.EmptyProcessStartInfo.Environment["TEST"] = null 将子进程中的环境变量设置为空值。

新行为

从 .NET 9 开始:

  • Environment.SetEnvironmentVariable("TEST", string.Empty) 将环境变量值设置为空值。 Environment.SetEnvironmentVariable("TEST", null) 行为保持不变,也就是说,它仍会删除环境变量。
  • ProcessStartInfo.Environment["TEST"] = null 删除环境变量。 ProcessStartInfo.Environment["TEST"] = string.Empty 行为保持不变,也就是说,它仍会将环境变量设置为空值。

引入的版本

.NET 9 预览版 6

中断性变更的类型

此更改为行为更改

更改原因

在此更改之前,无法使用 Environment.SetEnvironmentVariable(String, String) 将环境变量设置为空值,这是所有受支持平台上的有效环境变量值。

若要使用 Environment.SetEnvironmentVariable(String, String) 删除环境变量,请更改代码来传递 null 而不是 string.Empty 作为值参数。

若要使用 ProcessStartInfo.EnvironmentProcessStartInfo.EnvironmentVariables 将环境变量设置为空值,请将代码更改为 string.Empty 而不是 null

受影响的 API