从 .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.Server 为 true。 环境变量将替代配置文件设置。
破坏性变更的类型
此更改为行为更改。
更改原因
新行为与配置在 .NET 和其他地方的工作方式更一致,环境变量优先。
建议的措施
如果应用在运行时配置环境变量设置为不同于所需值的环境中运行,请取消设置环境变量或将其设置为所需的配置值。
受影响的 API
没有。