Macos OSX上LocalAppData环境变量的备选方案

Macos OSX上LocalAppData环境变量的备选方案,macos,.net-core,Macos,.net Core,我刚刚编写了我的第一个.Net核心应用程序,在OSX上遇到了一个问题 我开始在PC上写这篇文章,现在正在OSX上运行一些单元测试 这一行: var localAppData = Environment.GetEnvironmentVariable("LocalAppData"); 在PC上返回预期值,但在OSX上返回null。什么是最整洁的跨平台方式 在PKG中分发应用程序时,在运行时等方面是否还有其他考虑事项 我在这篇文章中找到的许多答案都是关于在launchd.conf中添加东西,这对我的

我刚刚编写了我的第一个.Net核心应用程序,在OSX上遇到了一个问题

我开始在PC上写这篇文章,现在正在OSX上运行一些单元测试

这一行:

var localAppData = Environment.GetEnvironmentVariable("LocalAppData");
在PC上返回预期值,但在OSX上返回
null
。什么是最整洁的跨平台方式

在PKG中分发应用程序时,在运行时等方面是否还有其他考虑事项

我在这篇文章中找到的许多答案都是关于在launchd.conf中添加东西,这对我的开发环境很好,但是当它在用户机器上运行时呢

我正在尝试的是找到一种方法来检索一些OSX等价的WindowsAppData


用户应用程序可以安全地创建文件并存储在每个OSX系统上预配置的数据的位置。

以下是我使用的:

string GetLocalAppDataFolder(){
if(RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
返回Environment.GetEnvironmentVariable(“LOCALAPPDATA”);
}
if(RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
返回Environment.GetEnvironmentVariable(“XDG_DATA_HOME”)??Path.Combine(Environment.GetEnvironmentVariable(“HOME”)、“.local”、“share”);
} 
if(RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{
返回Path.Combine(Environment.GetEnvironmentVariable(“HOME”)、“Library”、“Application Support”);
}
抛出新的NotImplementedException(“未知操作系统平台”);
}
逻辑如下:

  • 在Windows上,它返回
    LOCALAPPDATA
    environment变量(通常类似于
    C:\Users\{username}\AppData\Local
  • 在Linux上,它返回
    XDG\u DATA\u HOME
    environment变量,如果该变量不可用,则返回附加有
    /.local/share
    HOME
    变量(根据)
  • 在MacOS上,它返回
    HOME
    变量,并附加路径
    /Library/Application Support
    (因此默认情况下,您将得到
    /Users/{username}/Library/Application Support

这可能是Java的重复。是的,但作为与操作系统行为更相关的问题,它很好地解释了您可能使用的路径。它还有指向支持框架的
环境的错误的链接。GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
?(说真的,我不知道,我一直使用这一行,但从未在mac/linux上部署)