gpt4 book ai didi

c# - 如何为不同的操作系统覆盖 appsettings.json?

转载 作者:行者123 更新时间:2023-11-30 21:37:02 26 4
gpt4 key购买 nike

我的项目是简单的WebApi服务器,基于netcoreapp2.0。

我有简单的 appsettings.json

{
"logPath":"C:\logs\myLog.log"
}

它是 logPath 好吧,如果应用程序可以在 Windows 平台上运行,但我还想在 linux 上运行它。我知道,我可以使用控制台参数或环境变量来覆盖此设置,但我想为 appsettings.json 获取特定于操作系统的覆盖。类似 appsettings.linux.json 的内容(可能是 appsettings 文件,取决于 RID)

{
"logPath":"\var\tmp\myLog.log"
}

理想情况下,如果这个理论上的 appsettings.linux.json 只包含在构建输出中,如果我将为特定的 RID 构建我的应用程序。

如果可用,我该怎么做?

最佳答案

您可以创建多个应用程序设置文件。

appsettings.windows.json
appsettings.linux.json

然后使用 EnvironmentName 变量在它们之间进行交换。

启动

var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);

如果设置了 {env.EnvironmentName},则首先加载默认的 appsettings.json 文件,然后它将加载该文件。我使用它在开发、测试和生产环境之间进行交换。

关于c# - 如何为不同的操作系统覆盖 appsettings.json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47692380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com