首页 > 解决方案 > 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 文件上进行这项工作?

标签: c#jsonjson.net.net-5txt

解决方案


您必须使用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 或其他文件格式。


推荐阅读