首页 > 解决方案 > .Net Core 3.0 可执行文件不读取 appsettings.json

问题描述

我正在编写一个简单的 .Net Core 3.0 控制台应用程序并作为单个可执行文件发布。

我想出了如何排除该appsettings.json文件,但是当我运行应用程序时,它使用原始设置并且不尊重我对 `appsettings.json 文件所做的更改。

也许当我运行可执行文件时,它会将原始appsettings.json文件复制到某个地方的临时文件夹并读取它而不是原始位置的文件?

如果是这样,在 Debian Linux 上运行时该临时位置在哪里?

static void Main(string[] args)
{
    private static MySettings settings = new MySettings();

    var config = new ConfigurationBuilder()
        .AddJsonFile("appsettings.json", false, true)
        .Build();

    config.GetSection("Settings").Bind(settings);

    rootPath = settings.RootPath;
}

public class MySettings
{ 
    public int Buffer { get; set; }
    public string RootPath { get; set; }
    public int FrequencySeconds { get; set; }
}

标签: c#.net-coreconfigapp-config

解决方案


尝试将基本路径设置为工作目录

.SetBasePath(Directory.GetCurrentDirectory())

此外,绑定可以.Get<T>()在部分使用

static void Main(string[] args) {    

    var config = new ConfigurationBuilder()
        .SetBasePath(Directory.GetCurrentDirectory()) //<--
        .AddJsonFile("appsettings.json", false, true)
        .Build();

    MySettings settings = config.GetSection("Settings").Get<MySettings>();

    rootPath = settings.RootPath;
}

推荐阅读