Программно определяемая версия Mono - PullRequest
15 голосов
/ 07 декабря 2011

Каков рекомендуемый способ программного определения версии среды Mono?

Мы столкнулись с различными проблемами, когда наше приложение .Net используется со старыми версиями Mono. Иногда мы можем обойти эти проблемы, если мы знаем, с какой версией мы имеем дело, но иногда мы не можем.

Решением для нас было бы обнаружение версии Mono программным способом, а затем мы можем прозрачно применить обходные пути. Если версия Mono слишком старая, мы предложим пользователю обновить.

Мы можем обнаружить, что Mono - это наша среда выполнения с чем-то вроде этого:

bool isMonoRuntime = Type.GetType("Mono.Runtime") != null;

Как мы можем также надежно определить моно версию, не выводя ее косвенно? Для ясности нам нужен номер версии Mono, а не номер версии .Net CLR.

Ответы [ 3 ]

17 голосов
/ 07 декабря 2011

Вы можете проверить версию среды моно как:

Type type = Type.GetType("Mono.Runtime");
if (type != null)
{
    MethodInfo displayName = type.GetMethod("GetDisplayName", BindingFlags.NonPublic | BindingFlags.Static);
    if (displayName != null)
        Console.WriteLine(displayName.Invoke(null, null));
}

Отметьте это Как определить версию, из которой была построена и установлена ​​текущая среда моно? для получения более подробной информации.

2 голосов
/ 08 марта 2015

Вот еще одно решение (без использования отражения)

[DllImport("__Internal", EntryPoint="mono_get_runtime_build_info")]
public extern static string GetMonoVersion();


Console.WriteLine("Mono version: {0}",GetMonoVersion());
Mono version: 3.12.0 (tarball Sat Feb  7 19:13:43 UTC 2015)
0 голосов
/ 07 декабря 2011

Вы можете использовать это:

System.Reflection.Assembly.GetExecutingAssembly().ImageRuntimeVersion

Это должно дать вам версию Mono CLR, а в качестве бонуса она даст вам версию CLR для Windows.

http://msdn.microsoft.com/en-us/library/system.reflection.assembly.imageruntimeversion.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...