我找不到任何真正有效的方法来正确检测我的C#程序在什么平台上运行,特别是在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;
}
}
发布于 2012-04-13 19:50:57
也许可以查看Pinta源代码中的IsRunningOnMac方法:
发布于 2019-02-01 07:54:46
根据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.
}
https://stackoverflow.com/questions/10138040
复制相似问题