c# - .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; }
}
解决方案
尝试将基本路径设置为工作目录
.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;
}
推荐阅读
- javascript - Nightwatch JS:Browser.execute 不执行 javascript
- node.js - (Node.js) 需要将大数拆分成不大于 100 的小数
- javascript - 使用 hljs 库在 React 中动态突出显示代码
- graphql - Apollo 客户端(React):可以从 Query 对象获取规范化数据吗?
- javascript - 谷歌脚本:我无法为对象的键赋值
- c# - 异常处理:通过Main方法显示异常信息
- python - 第二个同时“for循环”执行中断第一个
- css - 上边距不起作用
- angular - 特定路径中所有文件的 Angular 6 路由
- c# - 带有 MVC 核心的 SQLite