在 dotnet core 2.1 中编译后 appsettings 在哪里
Where are appsettings after compiled in a dotnet core 2.1
我试图了解 appsettings.json
和 appsettings.{Environment}.json
以及环境变量如何在 dotnet core 2.1 应用程序中发挥作用,但我不知道应用程序设置在运行时如何(无论最终结果如何) transformation is) 被应用程序访问。
我希望在编译的 dll 中有应用程序设置(例如:MyWebApiApp\bin\Debug\netcoreapp2.1
),但我在那里没有看到它。
了解这一点将帮助我找出 OpenShift configmaps 与 appsettings 的最佳方法,因为我需要知道我是否应该在运行时依赖 appsettings,或者 appsettings 是否对开发有用但在生产中我应该依赖环境而是变量。
谢谢!
您 运行 是从 Visual Studio 中获取代码吗?默认 CreateDefaultBuilder
使用 Directory.GetCurrentDirectory()
来确定从哪个文件夹加载设置文件。当您从 Visual Studio 中 运行ning 时,当前目录是您的项目目录 - 所以当您 run/debug 程序时,它会找到正确的设置文件。
测试此方法的一种方法是更改为命令行,运行 您的应用程序使用 dotnet myapp.dll
。如果您从 appsettings
文件加载设置,它将找不到该文件并且设置将为空。
如果您将 appsettings
文件的属性更改为 copy if newer
并重建您的应用程序,当您从命令行 运行 它时,它将正确找到设置文件。
您可以通过查看 implementation file 了解虚拟主机如何确定要使用的设置。但是,简而言之,dotnetcore 将按以下顺序使用设置:
- appsettings.json
- 环境变量
- 命令行
这方面的文档是 here
因此,如果应用程序部署后某些设置可能会更改,那么您可以通过环境变量覆盖它们。如果你想以这种方式配置,你可以重新部署 appsettings
文件,但根据我的经验,通过环境变量处理生产设置要容易得多,可能使用第三方工具,例如傀儡
希望对您有所帮助。
我试图了解 appsettings.json
和 appsettings.{Environment}.json
以及环境变量如何在 dotnet core 2.1 应用程序中发挥作用,但我不知道应用程序设置在运行时如何(无论最终结果如何) transformation is) 被应用程序访问。
我希望在编译的 dll 中有应用程序设置(例如:MyWebApiApp\bin\Debug\netcoreapp2.1
),但我在那里没有看到它。
了解这一点将帮助我找出 OpenShift configmaps 与 appsettings 的最佳方法,因为我需要知道我是否应该在运行时依赖 appsettings,或者 appsettings 是否对开发有用但在生产中我应该依赖环境而是变量。
谢谢!
您 运行 是从 Visual Studio 中获取代码吗?默认 CreateDefaultBuilder
使用 Directory.GetCurrentDirectory()
来确定从哪个文件夹加载设置文件。当您从 Visual Studio 中 运行ning 时,当前目录是您的项目目录 - 所以当您 run/debug 程序时,它会找到正确的设置文件。
测试此方法的一种方法是更改为命令行,运行 您的应用程序使用 dotnet myapp.dll
。如果您从 appsettings
文件加载设置,它将找不到该文件并且设置将为空。
如果您将 appsettings
文件的属性更改为 copy if newer
并重建您的应用程序,当您从命令行 运行 它时,它将正确找到设置文件。
您可以通过查看 implementation file 了解虚拟主机如何确定要使用的设置。但是,简而言之,dotnetcore 将按以下顺序使用设置:
- appsettings.json
- 环境变量
- 命令行
这方面的文档是 here
因此,如果应用程序部署后某些设置可能会更改,那么您可以通过环境变量覆盖它们。如果你想以这种方式配置,你可以重新部署 appsettings
文件,但根据我的经验,通过环境变量处理生产设置要容易得多,可能使用第三方工具,例如傀儡
希望对您有所帮助。