.NET Standard 2.0 - Windows Registry - 适用于 Mac OS X - Unity

.NET Standard 2.0 - Windows Registry - works on Mac OS X - Unity

我的项目(最初在 Unity - Windows 上开发)API 兼容性级别设置为 .NET Standard 2.0,在我的项目中我有一个外部 .dll class 库也编译为 .NET Standard 2.0,其中使用 Microsoft.Win32。我正在将一些数据保存到 Windows 注册表。

现在我也在调整项目以在 Mac 上工作,我发现我的带有注册表的外部 .dll 在我的 Mac 上也没有错误。

我一直在寻找可以将数据存储在哪里,因为 Mac 的 OS X 没有像注册表这样的 Windows?

为什么以及如何运作?

该代码在Unity中用作.dll插件。

using Microsoft.Win32;

...

    private RegistryKey key;

    public StorageImpl()
    {
        key = Registry.CurrentUser.OpenSubKey(RegistryKeyPath, true);

        if (key == null)
        {
            key = Registry.CurrentUser.CreateSubKey(RegistryKeyPath);
        }
    }

    public DateTime? StartDate
    {
        get
        {
            object value = key.GetValue(RegistryStartDate);
            return value != null ? DateTime.FromBinary((long)value) : (DateTime?)null;
        }

        set
        {
            if (value != null)
            {
                key.SetValue(RegistryStartDate, value.Value.ToBinary(), RegistryValueKind.QWord);
            }
            else
            {
                key.DeleteValue(RegistryStartDate);
            }

            key.Flush();
        }
    }

我找到了保存数据的位置: /Users/user/.mono/registry/CurrentUser/software/nameOfSoftware/values.xml

我不得不使用终端手动搜索列出所有文件夹内容:ls -a