Ответ 1
Возможно, проверьте источник IsRunningOnMac в источнике Pinta:
Я не мог найти что-либо действительно эффективное, чтобы правильно определить, на какой платформе (Windows/Linux/Mac) выполнялась моя С# progrma, особенно на 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;
}
}
Возможно, проверьте источник IsRunningOnMac в источнике Pinta:
В соответствии с замечаниями на странице свойств Environment.OSVersion:
Свойство Environment.OSVersion не обеспечивает надежного способа определения точной операционной системы и ее версии. Поэтому мы не рекомендуем использовать этот метод. Вместо этого: Чтобы определить платформу операционной системы, используйте метод RuntimeInformation.IsOSPlatform.
RuntimeInformation.IsOSPlatform работал на то, что мне нужно.
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{
// Your OSX code here.
}
elseif (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
// Your Linux code here.
}