我找不到任何真正有效的方法来正确检测我的 C# 程序在哪个平台(Windows / Linux / Mac)上运行,尤其是在返回 Unix 并且几乎无法与 Linux 平台区分开来的 Mac 上!
所以我根据 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;
}
}