繁体   English   中英

C# .NET5 单个文件应用程序从目录读取和解析 Json / Txt 或其他文件格式

[英]C# .NET5 Single File Application Read and Parse Json / Txt or other file formats from directory

我正在阅读 .NET 框架上的文件,如下所示:

string path = AppDomain.CurrentDomain.BaseDirectory + @"sources\settings.json";
string jsonResult = File.ReadAllText(path);
return JsonConvert.DeserializeObject<Settings>(jsonResult);

当我切换到 .NET5 时,这只适用于调试模式。 当我使用Publish创建Single File Executable时,它没有运行。 当您单击 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 将其解析为 class。 这也适用于 txt 或其他文件格式。

如果您的目标是 settings.json 文件,该文件与您的 exe 位置一起驻留。 然后你可以简单地使用

using Newtonsoft.Json;

public static Settings ReadConfig()
{
  string path = @$"settings.json";
  string settingsText = File.ReadAllText(path);
  return JsonConvert.DeserializeObject<Settings>(settingsText);
}

另一种方法是使用ExpressSettings NugGet。

这是我创建的一个非常简单的库,用于在 .NET 中读取和写入设置。 您可以在一行代码中读取和写入设置。

它适用于 .NET 框架和 .NET 核心。 如果您认为它有用,可以在这里使用: https://github.com/sangeethnandakumar/Express-Settings

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM