#.net
#.net
Вопрос:
Обратите внимание, что этот вопрос относится к версии, под которой запущено приложение, а не ко всем установленным версиям, и к платформе (как показано в VS как «целевая платформа»), а не ко времени выполнения.
Спасибо.
Ответ №1:
Вы можете использовать свойство Version класса Environment. Объединение основного и второстепенного номера версии даст вам версию платформы (например, 2.0). MSDN:http://msdn.microsoft.com/en-us/library/system.environment.version.aspx
Комментарии:
1. Спасибо, но это не дает версию framework — это дает версию CLR.
Ответ №2:
Если вы хотите получить текущую версию CLR, используйте метод Новакова (например, 4.0.30319.239).:
Environment.Version
Если вы хотите узнать версию CLR, на основе которой был создан проект (например, 4.0.0.0), используйте следующее:
GetType().Assembly.GetReferencedAssemblies().Single(a => a.Name == "mscorlib").Version
Это может дать вам значение, отличное от текущего CLR, поскольку сборки более старых версий могут выполняться в более новых версиях CLR. Обратите внимание, что «Целевая платформа» 2.0, 3.0 и 3.5 вернет здесь 2.0.0.0, поскольку все они были созданы на основе версии 2.0 среды CLR.
Вы можете выполнить дополнительную проверку, которая может показать, что проект CLR 2.0 был создан с использованием целевой платформы 3.5:
typeof(ConsoleSandbox.Program).Assembly.GetReferencedAssemblies()
.SingleOrDefault(a => a.Name == "System.Core") == null
Приведенное выше выражение примет значение true, если целевая платформа равна 3.5 (или 4.0, если mscorlib равен 4.0.0.0), и примет значение false, если целевая платформа равна 2.0 или 3.0 или если ничего из System.Core.dll использовался (например, проект 2.0 / 3.0, который был обновлен).
Если вы объясните необходимость, стоящую за вашим вопросом, возможно, удастся дать вам лучший ответ.