环境变量优先于应用运行时配置设置

从 .NET 9 开始,如何解析应用运行时配置的优先级已更改。 如果同时提供环境变量和应用程序 runtimeconfig.json (或项目文件)中的相应设置,则环境变量优先于配置文件。

已引入的版本

.NET 9

以前的行为

以前,当设置了环境变量和应用程序的runtimeconfig.json相应设置时,runtimeconfig.json 具有优先权。

例如,请考虑具有以下 runtimeconfig.json 文件的应用程序:

{
  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  }
}

即使环境变量 DOTNET_gcServer 被设置为 0(false),由于 runtimeconfig.json 设置优先,应用程序仍会使用服务器垃圾回收。 环境变量实际上被忽略。

新行为

从 .NET 9 开始,当设置环境变量和应用程序的 runtimeconfig.json 相应设置时,环境变量优先。

使用与 上一行为 部分相同的示例,如果环境变量 DOTNET_gcServer 设置为 0 (false),则应用程序现在使用工作站垃圾回收而不是服务器垃圾回收,即使 runtimeconfig.json 指定 System.GC.Servertrue。 环境变量将替代配置文件设置。

破坏性变更的类型

此更改为行为更改

更改原因

新行为与配置在 .NET 和其他地方的工作方式更一致,环境变量优先。

如果应用在运行时配置环境变量设置为不同于所需值的环境中运行,请取消设置环境变量或将其设置为所需的配置值。

受影响的 API

没有。

另请参阅