跨项目和环境共享/转换应用程序设置

时间:2019-03-22 11:26:43

标签: azure asp.net-core azure-devops web-deployment

我得到了一个Visual Studio解决方案,其中包含多个项目(功能应用程序和Web API)以及一个在所有项目之间共享的数据层。我已经设置了解决方案,因此根据本文,所有项目都共享相同的配置(appsettings.json):https://andrewlock.net/sharing-appsettings-json-configuration-files-between-projects-in-asp-net-core/

所有项目均基于.net核心。

我已经为开发环境设置了构建和发布管道。但是我需要一个测试和生产环境。在将共享配置发布到测试和生产环境之前,如何转换共享配置?

1 个答案:

答案 0 :(得分:0)

你不知道。这不是ASP.NET Core中配置的工作方式。配置是覆盖的,而不是已转换的。如何应用不同的配置源有一个操作顺序,这基本上是它们注册的顺序。默认值为JSON <环境特定的JSON <用户密钥<环境变量<命令行参数。

如果您需要根据环境而异的配置,则将依赖于特定于环境的JSON文件(用于常规配置)或环境变量和/或诸如Azure Key Vault(用于秘密)之类的东西。由于所有这些都稍后在配置注册中进行,因此您在此处设置的任何值都将覆盖appsettings.json中的值。

对于诸如特定于环境的JSON之类的东西,其加载取决于ASPNETCORE_ENVIRONMENT的值,该值可以设置为环境变量或作为命令行参数--environment传递。在这两种情况下,值集都对应于{environment}的{​​{1}}部分。换句话说,如果将环境设置为appsettings.{environment}.json,则Production将被加载到配置中(如果存在)。环境变量与环境本身相关,因此不依赖于任何特定的环境值。