【问题标题】:.Net Core 3.0 executable doesn't read appsettings.json.Net Core 3.0 可执行文件不读取 appsettings.json
【发布时间】:2020-01-28 14:25:03
【问题描述】:

我正在编写一个简单的 .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; }
}

【问题讨论】:

  • 我改进了格式并添加了相关标签
  • 如何阅读 appsettings.json?
  • 我已更新帖子以显示代码的相关部分
  • @Matthew 显示相同的设置文件
  • @Matthew 也尝试设置工作目录.SetBasePath(Directory.GetCurrentDirectory())

标签: c# .net-core config app-config


【解决方案1】:

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

.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;
}

【讨论】:

  • .net core 3.1: 'ConfigurationBuilder' 不包含'SetBasePath' 的定义,并且找不到接受'ConfigurationBuilder' 类型的第一个参数的可访问扩展方法'SetBasePath' ...
  • @CharlesOkwuagwu 确保你有必要的库引用docs.microsoft.com/en-us/dotnet/api/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多