Skip to content

[Breaking change]: Support environment variables with empty value #41471

Closed
@jkotas

Description

@jkotas

Description

Add support for setting the environment variable to an empty value in Environment.SetEnvironment and ProcessInfo.Environment APIs.

Version

.NET 9 Preview 6

Previous behavior

Both Environment.SetEnvironment("TEST", string.Empty) and Environment.SetEnvironment("TEST", null) deleted the environment variable.

Both ProcessInfo.Environment["TEST"] = string.Empty and ProcessInfo.Environment["TEST"] = null set the environment variable in the child process to an empty value.

New behavior

Environment.SetEnvironment("TEST", string.Empty) sets the environment variable value to an empty value. Environment.SetEnvironment("TEST", null) behavior is unchanged, it still deletes the environment variable.

ProcessInfo.Environment["TEST"] = null deletes the environment variable. ProcessInfo.Environment["TEST"] = string.Empty behavior is unchanged, it still sets the environment variable the environment variable value to an empty value.

Type of breaking change

  • Binary incompatible: Existing binaries may encounter a breaking change in behavior, such as failure to load or execute, and if so, require recompilation.
  • Source incompatible: When recompiled using the new SDK or component or to target the new runtime, existing source code may require source changes to compile successfully.
  • Behavioral change: Existing binaries may behave differently at run time.

Reason for change

Before this change, it was not possible to use Environment.SetEnvironment to set the environment variable to an empty value that is a valid environment variable value on all supported platforms.

Recommended action

Change code to pass null instead of string.Empty as the value argument to Environment.SetEnvironment API to delete the environment variable.

Change code to pass string.Empty instead of null as the value to ProcessStartInfo.Environment, ProcessStartInfo.EnvironmentVariables APIs to set the environment variable to an empty value.

Feature area

Core .NET libraries

Affected APIs

Environment.SetEnvironmentVariable, ProcessStartInfo.Environment, ProcessStartInfo.EnvironmentVariables


Associated WorkItem - 281896

Metadata

Metadata

Assignees

Labels

🏁 Release: .NET 9Work items for the .NET 9 release📌 seQUESTeredIdentifies that an issue has been imported into Quest.breaking-changeIndicates a .NET Core breaking changein-prThis issue will be closed (fixed) by an active pull request.

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions