.NET 6环境判定规则及控制台应用Production环境配置位置查询
.NET 6控制台应用Production环境配置位置说明
针对你的.NET 6控制台应用,使用Host.CreateDefaultBuilder时,Production环境的配置会从以下位置按优先级加载(优先级从低到高,高优先级会覆盖低优先级配置):
项目配置文件
首先加载根目录下的appsettings.json基础配置,然后自动叠加appsettings.Production.json中的配置(该文件仅对Production环境生效)。编译后这两个文件会输出到程序的运行目录,若不存在appsettings.Production.json,则仅使用appsettings.json的配置。环境变量
系统或当前会话中前缀为DOTNET_的环境变量会被加载,优先级高于配置文件。比如设置DOTNET_ConnectionStrings__DefaultConnection可以覆盖配置文件中的数据库连接字符串。
你也可以在启动应用时临时指定环境变量(同时也能确认当前环境):# Windows CMD set ASPNETCORE_ENVIRONMENT=Production && YourApp.exe # Windows PowerShell $env:ASPNETCORE_ENVIRONMENT='Production'; .\YourApp.exe # Linux/macOS终端 ASPNETCORE_ENVIRONMENT=Production ./YourApp命令行参数
启动应用时传入的命令行参数优先级最高,比如:YourApp.exe --ConnectionStrings:DefaultConnection "Data Source=..."这类参数会直接覆盖配置文件和环境变量中的对应项。
另外需要注意:Host.CreateDefaultBuilder默认会读取ASPNETCORE_ENVIRONMENT或DOTNET_ENVIRONMENT环境变量来确定当前运行环境,你看到的'Production'就是由这两个变量其中之一指定的(如果没手动设置,默认环境就是Production)。
内容的提问来源于stack exchange,提问作者Paul Sinnema
相关产品推荐
相关产品推荐

