支持空环境变量
添加了这项支持,以便能够使用 Environment.SetEnvironmentVariable(String, String) 将环境变量设置为空字符串。 作为这项工作的一部分,设置 ProcessStartInfo.Environment 和 ProcessStartInfo.EnvironmentVariables 属性的行为已更改为与 Environment.SetEnvironmentVariable(String, String) 的行为一致。
旧行为
以前的行为:
Environment.SetEnvironmentVariable("TEST", string.Empty)
和Environment.SetEnvironmentVariable("TEST", null)
删除环境变量。ProcessStartInfo.Environment["TEST"] = string.Empty
和ProcessStartInfo.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.Environment 或 ProcessStartInfo.EnvironmentVariables 将环境变量设置为空值,请将代码更改为 string.Empty
而不是 null
。