我找不到任何有效的方法来正确检测我的C#progrma运行的平台(Windows / Linux / Mac),特别是在Mac上,它返回Unix并且几乎不能与Linux平台区分开来!
所以我根据Mac的特性做了一些不太理论化,更实用的东西。
我发布了工作代码作为答案。请评论它是否适合您/可以改进。
谢谢!
回复:
这是工作代码!
public enum Platform
{
Windows,
Linux,
Mac
}
public static Platform RunningPlatform()
{
switch (Environment.OSVersion.Platform)
{
case PlatformID.Unix:
// Well, there are chances MacOSX is reported as Unix instead of MacOSX.
// Instead of platform check, we'll do a feature checks (Mac specific root folders)
if (Directory.Exists("/Applications")
& Directory.Exists("/System")
& Directory.Exists("/Users")
& Directory.Exists("/Volumes"))
return Platform.Mac;
else
return Platform.Linux;
case PlatformID.MacOSX:
return Platform.Mac;
default:
return Platform.Windows;
}
}
答案 0 :(得分:6)
也许请查看Pinta源中的IsRunningOnMac方法:
答案 1 :(得分:1)
根据Environment.OSVersion Property page上的评论:
Environment.OSVersion属性不提供可靠的方法来 确定确切的操作系统及其版本。因此,我们 不建议您使用此方法。相反:确定 操作系统平台,请使用RuntimeInformation.IsOSPlatform 方法。
RuntimeInformation.IsOSPlatform满足了我的需求。
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{
// Your OSX code here.
}
elseif (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
// Your Linux code here.
}