Как определить версию, из которой была собрана и установлена ​​текущая среда выполнения Mono?

Я хочу определить ревизию (как ее правильно назвать в Git?), из которой была собрана и установлена ​​текущая среда выполнения Mono.

$ dmcs --version
Mono C# compiler version 2.9.0.0

но этого явно недостаточно.

Страница ошибки XSP/ASP.NET содержит дополнительную информацию:

Информация о версии: Mono Runtime Version: 2.8.1 (master/cdf1247, сб, 4 сентября, 01:22:04 MSD 2010); Версия ASP.NET: 4.0.30319.1

но мне кажется, что это грязный хак.

Как это сделать правильно?


person abatishchev    schedule 14.11.2010    source источник
comment
Что касается бонусных баллов, кто-нибудь знает, как определить, какая версия Mono включена в игровой движок Unity? В Unity 4.1.5 методы, показанные здесь, дают мне версию 2.0, хотя у меня есть основания полагать, что это версия 2.8.2.   -  person yoyo    schedule 17.08.2013


Ответы (2)


mono -V выведет строку версии, включая версию исходного кода.

person skolima    schedule 15.11.2010

Если вы ищете моно версию во время выполнения; в mscorlib есть внутренний класс Mono.Runtime, у него есть статический метод GetDisplayName, который должен возвращать строку с текущей версией среды выполнения. Этот метод является закрытым, но доступ к нему можно получить через отражение. Я написал небольшой скрипт, чтобы проверить это, проверьте, сработает ли он для вас:

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

в моей системе это возвращает:

2.6.7 (Дебиан 2.6.7-3ubuntu1~dhx1)

надеюсь, это поможет, с уважением

person serge_gubenko    schedule 14.11.2010
comment
Большое спасибо! Но как я могу получить сообщение типа (master/cdf1247 Sat Sep 4 01:22:04 MSD 2010)? - person abatishchev; 15.11.2010
comment
Вы понимаете, что если ваш моно был собран из git checkout, сборка из архива даст вам только версию. - person lupus; 15.11.2010