Fra*_*k59 5 c# .net-core .net-standard-2.0
我的项目是简单的WebApi服务器,基于netcoreapp2.0。
我有简单的appsettings.json
{
"logPath":"C:\logs\myLog.log"
}
Run Code Online (Sandbox Code Playgroud)
logPath
如果应用程序可以在 Windows 平台上运行,那没关系,但我也想在 Linux 上运行它。我知道,我可以使用控制台参数或环境变量来覆盖此设置,但我想获得操作系统特定的覆盖appsettings.json
。类似于appsettings.linux.json
(可能是 appsettings 文件,取决于 RID)的内容
{
"logPath":"\var\tmp\myLog.log"
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,如果这个理论appsettings.linux.json
仅包含在构建输出中,如果我将为特定 RID 构建我的应用程序。
如果可用的话我该怎么做?
您可以创建多个应用程序设置文件。
appsettings.windows.json
appsettings.linux.json
然后使用环境名称变量在它们之间进行交换。
启动
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
Run Code Online (Sandbox Code Playgroud)
如果设置了 {env.EnvironmentName},则首先加载默认的 appsettings.json 文件,然后它将加载该文件。我用它来在开发、测试和生产环境之间进行交换。
归档时间: |
|
查看次数: |
1658 次 |
最近记录: |