.Net 7 如何根据发布配置转换appsettings.json

问题描述 投票:0回答:1

我正在使用 asp.net 7 和 Visual Studio 2022 Professional。我开发 Web 应用程序并使用 VS 发布配置文件或简单的批处理文件发布这些应用程序。我希望发布过程要做的就是使用适当的 appsettings.json 文件构建输出并将其复制到指定路径。

我想我正在尝试执行与旧的 web.config 转换相同的操作,但使用 appsettings.json。我的 appsettings.Development.json 中的设置与 appsettings.json 中的设置不同,我希望发布过程根据我的 EnvironmentName 变量生成适当的 appsettings.json。

我在批处理文件中尝试了以下操作

dotnet publish /p:Configuration=Release /p:EnvironmentName=Development --output c:\temp -property:SatelliteResourceLanguages=en-US -r win-x64
pause

它不起作用。它确实会构建输出并将其复制到指定的文件夹,但生成的 appsettings.json 不是基于我的 appsettings.Development.json 文件。我得到的是原始的 appsettings.json 文件不变。

是否可以根据 EnvironmmentName 对 appsettings.json 进行转换?

asp.net visual-studio-2022 appsettings
1个回答
0
投票

不同配置的使用在.NET Core中的工作方式不同。

不是生成单个配置文件,而是通过检查确定环境的变量来选择文件。

来自文档:

为了确定运行时环境,ASP.NET Core 从 以下环境变量:

  1. DOTNET_环境
  2. ASPNETCORE_ENVIRONMENT 当 调用 WebApplication.CreateBuilder 方法。默认的 ASP.NET 核心 Web 应用程序模板调用 WebApplication.CreateBuilder。这 当 DOTNET_ENVIRONMENT 值覆盖 ASPNETCORE_ENVIRONMENT 时 使用WebApplicationBuilder。对于其他主机,例如 配置WebHostDefaults和WebHost.CreateDefaultBuilder, ASPNETCORE_ENVIRONMENT 具有更高的优先级。

IHostEnvironment.EnvironmentName 可以设置为任意值,但是 框架提供以下值:

  • 开发:launchSettings.json 文件设置 ASPNETCORE_ENVIRONMENT 到本地机器上开发。
  • 分期
  • Production:如果未设置 DOTNET_ENVIRONMENT 和 ASPNETCORE_ENVIRONMENT,则为默认值。

您可以在这里阅读更多相关信息

© www.soinside.com 2019 - 2024. All rights reserved.