.net core 在dotnet core 2.1中编译后的appsettings在哪里

.net core 在dotnet core 2.1中编译后的appsettings在哪里,.net-core,appsettings,.net Core,Appsettings,我试图了解在dotnet core 2.1应用程序中,appsettings.json和appsettings.{Environment}.json以及环境变量是如何发挥作用的,但我不知道应用程序在运行时如何访问appsettings(无论最终转换是什么) 我希望在编译的dll中有appsettings(例如:MyWebApiApp\bin\Debug\netcoreapp2.1),但我没有看到它 理解这一点将帮助我找到OpenShift configmaps与appsettings的最佳方法,

我试图了解在dotnet core 2.1应用程序中,
appsettings.json
appsettings.{Environment}.json
以及环境变量是如何发挥作用的,但我不知道应用程序在运行时如何访问appsettings(无论最终转换是什么)

我希望在编译的dll中有appsettings(例如:
MyWebApiApp\bin\Debug\netcoreapp2.1
),但我没有看到它

理解这一点将帮助我找到OpenShift configmaps与appsettings的最佳方法,因为我需要知道我是否应该在运行时依赖appsettings,或者appsettings是否对开发有用,但在生产中我应该依赖环境变量而不是环境变量


谢谢

是否从Visual Studio中运行代码?默认的
CreateDefaultBuilder
使用
目录.GetCurrentDirectory()
确定从哪个文件夹加载设置文件。当您在Visual Studio中运行时,当前目录是您的项目目录-因此,当您运行/调试程序时,它会找到正确的设置文件

测试这一点的一种方法是切换到命令行,并使用
dotnetmyapp.dll
运行应用程序。如果从
appsettings
文件加载设置,它将找不到该文件,并且设置将为空

如果将
appsettings
文件上的属性更改为
copy If newer
并重新生成应用程序,当您从命令行运行应用程序时,它将正确找到设置文件

通过查看,您可以了解Web主机如何确定要使用的设置。但简而言之,dotnetcore将按以下顺序使用设置:

  • appsettings.json
  • 环境变量
  • 命令行
这方面的文档是

因此,如果部署应用程序后有可能更改的设置,则可以通过环境变量覆盖这些设置。如果您想以这种方式进行配置,可以重新部署
appsettings
文件,但根据我的经验,通过环境变量处理生产设置要容易得多,可能需要使用第三方工具,例如puppet

希望有帮助