2

我目前正在使用 Mono 在 C# 中为 Mac OSX 编写应用程序。我想做的是确定程序运行的 OSX 版本。

我找到了NSAppKitVersionNumber适合我需要的常数。

但是,我不知道如何访问它...

我相信这是可能的,因此您的任何帮助将不胜感激!

4

2 回答 2

5

像这样的东西:

    [DllImport("/System/Library/Frameworks/CoreServices.framework/CoreServices")]
    internal static extern short Gestalt(int selector, ref int response);
    static string m_OSInfoString = null;
    static void InitOSInfoString()
    {
        //const int gestaltSystemVersion = 0x73797376;
        const int gestaltSystemVersionMajor = 0x73797331;
        const int gestaltSystemVersionMinor = 0x73797332;
        const int gestaltSystemVersionBugFix = 0x73797333;

        int major = 0;
        int minor = 0;
        int bugFix = 0;

        Gestalt(gestaltSystemVersionMajor, ref major);
        Gestalt(gestaltSystemVersionMinor, ref minor);
        Gestalt(gestaltSystemVersionBugFix, ref bugFix);

        if (major == 10 && minor == 5)
            RunningOnLeopard = true;
        else
        {
            RunningOnLeopard = false;
            if (major == 10 && minor == 7)
                RunningOnLion = true;
        }

        m_OSInfoString = string.Format("Mac OS X/{0}.{1}.{2}", major, minor, bugFix);
    }
于 2013-01-19T02:07:43.137 回答
0

在 Windows 上的 .NET 中,您有 Environment.OSVersion 方法。你可以试试看它在 Mac OS 上能给你带来什么:

// Sample for the Environment.OSVersion property 
using System;

class Sample 
{
    public static void Main() 
    {
    Console.WriteLine();
    Console.WriteLine("OSVersion: {0}", Environment.OSVersion.ToString());
    }
}
/*
This example produces the following results:

OSVersion: Microsoft Windows NT 5.1.2600.0
*/
于 2013-01-18T19:28:27.190 回答