[英]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.