Macos OSX上LocalAppData环境变量的备选方案
我刚刚编写了我的第一个.Net核心应用程序,在OSX上遇到了一个问题 我开始在PC上写这篇文章,现在正在OSX上运行一些单元测试 这一行:Macos OSX上LocalAppData环境变量的备选方案,macos,.net-core,Macos,.net Core,我刚刚编写了我的第一个.Net核心应用程序,在OSX上遇到了一个问题 我开始在PC上写这篇文章,现在正在OSX上运行一些单元测试 这一行: var localAppData = Environment.GetEnvironmentVariable("LocalAppData"); 在PC上返回预期值,但在OSX上返回null。什么是最整洁的跨平台方式 在PKG中分发应用程序时,在运行时等方面是否还有其他考虑事项 我在这篇文章中找到的许多答案都是关于在launchd.conf中添加东西,这对我的
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上,它返回
environment变量(通常类似于LOCALAPPDATA
)C:\Users\{username}\AppData\Local
- 在Linux上,它返回
environment变量,如果该变量不可用,则返回附加有XDG\u DATA\u HOME
的/.local/share
变量(根据)HOME
- 在MacOS上,它返回
变量,并附加路径HOME
(因此默认情况下,您将得到/Library/Application Support
/Users/{username}/Library/Application Support
环境的错误的链接。GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
?(说真的,我不知道,我一直使用这一行,但从未在mac/linux上部署)