在dotnet核心2.1中编译后的应用程序设置在哪里

时间:2018-09-28 09:13:03

标签: .net-core appsettings

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

我希望在已编译的dll(例如MyWebApiApp\bin\Debug\netcoreapp2.1)中包含appsettings,但在那儿看不到它。

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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

一种测试方法是更改​​为命令行并使用dotnet myapp.dll运行您的应用程序。如果您要从appsettings文件加载设置,它将找不到该文件,并且设置将为空。

如果将appsettings文件的属性更改为copy if newer并重建应用程序,则从命令行运行它时,它将正确找到设置文件。

您可以通过查看implementation file来了解网络托管服务商如何确定要使用的设置。但是,简而言之,dotnetcore将按以下顺序使用设置:

  • appsettings.json
  • 环境变量
  • 命令行

此文档为here

因此,如果部署应用程序后某些设置可能会更改,那么您可以通过环境变量覆盖它们。如果您希望以这种方式进行配置,则可以重新部署appsettings文件,但是根据我的经验,通过环境变量(可能使用第三方工具)处理生产设置要容易得多。木偶。

希望有帮助。