.NET Core如何通过命令行传递配置段(无需修改代码)
解决方案:通过命令行传递数据库配置(无需修改现有代码)
这事儿其实很简单,.NET Core的配置系统天生支持命令行参数覆盖配置文件,而且优先级比appsettings.json高,完全不用动你现有的任何代码。
你只需要在启动项目的时候,按照配置层级的格式传入命令行参数就行,具体格式是用冒号:(或者双下划线__,Windows命令行下有时候冒号会有兼容性问题)来表示嵌套的配置节点。
具体命令示例
1. 使用dotnet run启动项目时:
dotnet run --DataSource:ConnectionString="mongodb://your-mongo-server:27017" --DataSource:DatabaseName="YourCustomDB" --DataSource:CollectionName="YourApiLogCollection"
2. 运行发布后的可执行文件时:
YourProjectName.exe --DataSource:ConnectionString="mongodb://your-mongo-server:27017" --DataSource:DatabaseName="YourCustomDB" --DataSource:CollectionName="YourApiLogCollection"
为什么这能生效?
你的现有代码是通过builder.Configuration.GetSection("DataSource")来绑定DatabaseSettings类的,而.NET Core的配置系统会自动把命令行中传入的这些参数合并到配置体系里,并且命令行参数的优先级高于appsettings.json。也就是说,即使appsettings.json里还有原来的DataSource配置,命令行传入的值也会覆盖它;就算你把appsettings里的这段配置删掉,命令行传入的参数依然能被正确识别并绑定到DatabaseSettings。
这样一来,LogService里通过IOptions<DatabaseSettings>获取到的配置就是你命令行传入的值,完全不用修改任何现有代码,完美符合你的需求。
内容的提问来源于stack exchange,提问作者user5466135
相关产品推荐
相关产品推荐

