我刚刚编写了我的第一个.Net Core应用程序,并且在OSX上遇到了一个问题。
我开始在PC上写这个,我只是在OSX上运行一些单元测试。
这一行:
var localAppData = Environment.GetEnvironmentVariable("LocalAppData");
在PC上返回预期值但在OSX上返回null
。制作这种跨平台最简单的方法是什么?
在运行时等应用程序在PKG中分发时是否还有其他注意事项?
我在这个谈论中发现的很多答案都是关于在launchd.conf中添加内容,这对我的开发环境来说是好的,但是当它在用户机器上运行时呢?
我正在尝试的是找到一种方法来检索一些OSX等效的Windows AppData。
用户应用程序可以安全地创建文件并存储在每个OSX系统上预配置的数据的位置。
答案 0 :(得分:0)
这就是我正在使用的:
string GetLocalAppDataFolder() {
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
return Environment.GetEnvironmentVariable("LOCALAPPDATA");
}
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
return Environment.GetEnvironmentVariable("XDG_DATA_HOME") ?? Path.Combine(Environment.GetEnvironmentVariable("HOME"),".local","share");
}
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{
return Path.Combine(Environment.GetEnvironmentVariable("HOME"), "Library", "Application Support");
}
throw new NotImplementedException("Unknown OS Platform");
}
逻辑如下:
LOCALAPPDATA
环境变量(通常类似于C:\Users\{username}\AppData\Local
)。XDG_DATA_HOME
环境变量,或者如果不可用,则返回HOME
附加/.local/share
的变量(根据FreeDesktop Base Directory Specification)HOME
变量,并附加路径/Library/Application Support
(因此默认情况下,您将以/Users/{username}/Library/Application Support
结尾