c# - C# .NET5 单文件应用程序从目录中读取和解析 Json / Txt 或其他文件格式
问题描述
我正在阅读 .NET Framework 上的文件,如下所示:
string path = AppDomain.CurrentDomain.BaseDirectory + @"sources\settings.json";
string jsonResult = File.ReadAllText(path);
return JsonConvert.DeserializeObject<Settings>(jsonResult);
当我切换到 .NET5 时,这只适用于调试模式。当我Single File Executable
使用Publish创建它时,它没有运行。当您单击 Exe 时,它永远不会打开或引发异常。此外,try-catch
块无法处理异常。
如何在 .NET5 Single Exe 文件上进行这项工作?
解决方案
您必须使用Directory.GetCurrentDirectory()
而不是AppDomain.CurrentDomain.BaseDirectory
.
using Newtonsoft.Json;
public static Settings LoadSettingsFile()
{
string currentPath = Directory.GetCurrentDirectory();
string directoryPath = @$"{currentPath}\sources";
string path = @$"{directoryPath}\settings.json";
string jsonResult = File.ReadAllText(path);
return JsonConvert.DeserializeObject<Settings>(jsonResult);
}
如果您正在阅读 JSON 文件,则可以使用 Newtonsoft 将其解析到您的班级。这也适用于 txt 或其他文件格式。
推荐阅读
- angular - Angular 6 + rxjs - 映射的 HTTP 响应不返回响应;
- scala - 在 akka.testkit.TestKit 中测试消息转发
- javascript - 如何在 svg 之前也始终在前台获取导航栏?
- javascript - 在Javascript中级联函数的干净方法是什么?
- c - 使用系统调用时文件中的垃圾值
- typescript - 有没有办法跳过类型检查以加快 TypeScript 编译速度?
- javascript - 无法使用 jquery 为特定 H1 标签应用 css
- javascript - 在另一个 JS 文件中调用全局函数。我如何让“这个”工作?
- javascript - 如何使用 html 表单来“修补”数据库?
- machine-learning - 使用标记+预测数据重新训练生产模型?