我正在编写一个简单的.Net Core 3.0控制台应用程序,并作为单个可执行文件发布。
我想出了如何排除appsettings.json
文件,但是当我运行该应用程序时,它使用的是原始设置,并且不接受我对`appsettings.json文件所做的更改。
也许当我运行可执行文件时,它是将原始appsettings.json
文件复制到某个位置的temp文件夹中,而不是在原始位置读取该文件吗?
如果是这样,那么在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; }
}
尝试设置工作目录的基本路径
.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;
}