Будет ли .NET 4.5 представить новую версию CLR?
Вопрос
В прошлом не каждая новая версия .NET поставлялась с новой версией CLR. Я знаю .NET 1.0, 1.1, 2,0 и 4.0, но .NET 3.0 и 3.5 - нет.
Будет ли .NET 4.5 представить новый CLR? И как можно сказать, есть ли новый CLR?
Решение
Да, .NET 4.5 имеет бренд, шлепающий новую версию CLR, вы можете прочитать об улучшениях AT;
Чтобы уточнить; Это новая версия CLR, которая на самом деле заменяет 4.0, поэтому называть его обновлением или новым CLR является спорным.
Чтобы сказать, в какой версии CLR вы используете, используйте
System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion()
Другие советы
Нет, это все еще версия 4.0.30319. Новый пересмотр CLR.DLL и друзей заменит существующие на вашей машине. Та же схема, что и в .NET 3.0, 3.5 и 3,5SP1. Проверка, чтобы увидеть, установлен ли 4.5, требует такого же подхода, что и эти версии, вы Проверьте реестр.
Да. А Версия изменений CLR из 4.0.30319.269
к 4.0.30319.17379
. Анкет Таким образом, CLR новый, но он обратно совместим с CLR .NET 4.0. Вам не нужно пересекать какой-либо код, записанный и составленный .NET v4.0.
От .Net Framework версии и зависимости Страница на MSDN:
.NET Framework 4.5 RC-это обновление на месте, которое заменяет .NET Framework 4 на вашем компьютере. После установки этого обновления ваши приложения .NET Framework 4 должны продолжать работать без необходимости перекомпиляции. Однако некоторые изменения в платформе .NET могут потребовать изменения в коде вашего приложения.
Кроме того, из .Net Framework Blog:
.NET Framework 4.5-это обновление на месте, которое заменяет .NET Framework 4 (а не установка бок о бок). Наша цель состоит в том, чтобы .NET 4.5 полностью совместима с приложениями, созданными для .NET 4
Есть некоторые изменения, которые нет обратно совместимо. Увидеть Совместимость приложения в .NET Framework 4.5 RC Страница на MSDN.
Официальное руководство от Microsoft и хорошей практики кодирования - это не обнаружение конкретных версий CLR. Скорее, вы должны обнаружить, присутствуют ли определенные функции. Вместо
public static bool IsDotNet45()
{
return Environment.Version.Major == 4 &&
Environment.Version.Revision > 17000;
}
Сделайте что -то вроде:
public static bool SupportsReflectionContext()
{
// Class "ReflectionContext" exists from .NET 4.5 onwards.
return Type.GetType("System.Reflection.ReflectionContext", false) != null;
}
Хотя я сомневаюсь, что это было доступно в его текущем формате во время вопроса, вот КЛР На MSDN, где он показывает все фрейв -версии и версию CLR, которые они включают. Я нашел это очень полезным, поэтому я подумал, что поделюсь.
Следующий на .NET 4.5 в нем говорится, что включает CLR 4.
.NET 4 и .NET 4.5 (включая 4.5.1 и 4.5.2) находятся на CLR версии 4.0
Подробнее: https://msdn.microsoft.com/en-us/library/8bs2ecf4(v=vs.110).aspx
.NET Framework 4.5 похож на пакет обслуживания для .NET Framework 4 с некоторыми дополнительными функциями.
У Скотта Хансельмана есть пост в своем блоге, посвященный этому вопросу. Вы можете узнать об этом здесь:
Задолго до того, что в CLR есть обновления, которые улучшают производительность и добавляют новые библиотеки. CLR, используемый .NET 4.5, совместим с .NET 4. Это считается незначительным обновлением. Эти незначительные обновления-это то, что Microsoft называет обновлением на месте.