【问题标题】:Where to save .Net MAUI user settings.Net MAUI 用户设置的保存位置
【发布时间】:2022-01-05 20:40:15
【问题描述】:

在 Windows 窗体和 WPF 应用程序中,我们可以use the Settings designer file to save user-specific settings。文档仅提及 .Net Framework(例如 1-4),而不是 .Net Core 或 .Net(例如 5+)。我已经确认 .settings 格式和设计器仍然可以在带有 Visual Studio 2022 的 Windows 上的 .Net 6 WPF 中使用。

我的问题是,.settings 文件格式和设计器仍然是.Net MAUI 应用程序的推荐方法吗?它是否适用于所有平台(Windows、macOS、移动设备)?如果不是,推荐的方法是简单地编写您自己的自定义文件来保存您的用户设置,如果是,应该将文件写入哪里? Environment.SpecialFolder.ApplicationData / Environment.SpecialFolder.LocalApplicationData,还是其他地方?

【问题讨论】:

  • 也许 Gerald 会带着最新的信息出现。除此之外,这将作为一个问题在github.com/dotnet/maui 上打开。我认为 WinForms 和 WPF 方法是特定于 Windows 的(尽管我可能错了)。该解决方案可能类似于为 Xamarin Forms 所做的。谷歌xamarin forms user and configuration settings.
  • 感谢@ToolmakerSteve。我确实在xamarin-forms-samples here 上找到了写入临时文件的示例,但这不一定与用户设置相同。我找到了你提到的the Xamarin configuration settings。很高兴知道这是否是 MAUI 的方式。
  • 另外,用户的偏好可以用Xamarin Essentials Preferences保存。我确定它会出现在 Maui Essentials 中(如果还没有的话)。
  • 嗯。也许应用程序配置成为 .net 6 的责任。那么它可能是一个单一的解决方案,适用于所有跨平台场景,而不仅仅是 MAUI。 This article about ConfigurationManager 看起来很有趣。
  • 是的,我认为用户设置和应用程序配置是不同用途的不同野兽,我的问题有点令人困惑,因为我提到了两者。我将对其进行编辑以仅提及用户设置,因为这就是我要询问的内容。

标签: .net settings maui


【解决方案1】:

这一切都归结为您的要求。对此没有灵丹妙药。

我必须承认我并不真正了解您提到的设置(设计器)文件。我可以说这不是 Xamarin 或 .NET MAUI 中的事情(据我所知)。可能还因为移动应用程序中存在沙盒的概念,而在桌面应用程序中则较少。所以保存东西的位置比较重要。

在 cmets 中已经有一些很好的建议可以帮助您入门。如果您的要求只是保存简单类型(字符串、布尔值、整数等),那么 Essentials Preferences API 应该可以正常工作。我认为在引擎盖下只是序列化为一个 json 文件并将其存储在某个地方。目前,Essentials 确实已经是 .NET MAUI 的一部分。

Xamarin.Forms 曾经有自己的 Properties,我认为这是 .NET 应用程序中更常见的概念,但我认为 Essentials 方式更好。

如果您想保存更复杂的内容,您可能需要考虑使用本地数据库(如 SQLite),或者只是滚动您自己的并序列化您的设置并将其保存在某处,最好使用 Essentials FileSystem Helpers

这里需要注意的一点,也就是这些库的价值所在,是您保存设置的哪里。您是否希望将设置备份到云服务,以便在重新安装应用程序后仍然存在?或者甚至在新手机上安装相同的应用程序?或者你只是想重置整个状态而不关心它。

如果你想通了,剩下的就看你自己了!希望这会有所帮助。

【讨论】:

  • 感谢杰拉德的链接。很高兴知道 MAUI 不支持 .settings,并且使用 Xamarin.Essentials 是使用 .Net 本机文件路径枚举的方法 ? 我假设包名称/命名空间将从 Xamarin 更改为其他内容这条路,就像 MAUI.Essentials 一样,但我会在/如果它发生时处理它。
  • .NET MAUI Essentials 已经是预览版的一部分,可以在 Microsoft.Maui.Essentials 下找到。除了该命名空间之外,API 应该是相同的
猜你喜欢
  • 1970-01-01
  • 2022-07-05
  • 2014-08-01
  • 1970-01-01
  • 2011-01-31
  • 1970-01-01
  • 2015-01-15
  • 2011-03-13
  • 1970-01-01
相关资源
最近更新 更多