.Net Core 3.0 可执行文件不读取 appsettings.json
Posted
技术标签:
【中文标题】.Net Core 3.0 可执行文件不读取 appsettings.json【英文标题】:.Net Core 3.0 executable doesn't read 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())
【参考方案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/…以上是关于.Net Core 3.0 可执行文件不读取 appsettings.json的主要内容,如果未能解决你的问题,请参考以下文章
Publish.net core 3.0 as FDE for win on linux
使用 .NET core 3.0/System.text.Json 解析 JSON 文件