В прошлом не каждая новая версия .NET поставлялась с новой версией CLR. Я знаю .NET 1.0, 1.1, 2.0 и 4.0, но .NET 3.0 и 3.5 этого не делал.
Будет ли .NET 4.5 вводить новую среду CLR? И как можно сказать, есть ли новая среда 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, вы можете прочитать об улучшениях в;
Прояснить; это новая версия CLR, которая фактически заменяет версию 4.0, поэтому вопрос о том, следует ли назвать ее обновлением или новой CLR, является спорным.
Чтобы указать версию CLR, в которой вы работаете, используйте
System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion()
Нет, это еще версия 4.0.30319. Новая версия clr.dll и друзей заменит существующие на вашем компьютере. Та же схема, что и в .NET 3.0, 3.5 и 3.5SP1. Чтобы проверить, установлен ли 4.5, требуется тот же подход, что и те версии, проверить реестр.
На странице .NET Framework Versions and Dependencies на MSDN:
.NET Framework 4.5 RC - это обновление на месте, которое заменяет .NET Framework 4 на вашем компьютере. После установки этого обновления ваши приложения .NET Framework 4 должны продолжать работать без необходимости перекомпиляции. Однако некоторые изменения в .NET Framework могут потребовать внесения изменений в ваш код приложения.
Кроме того, из .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;
}
Хотя я сомневаюсь, что это было доступно в текущем формате во время вопроса, вот Руководство по CLR на MSDN, где он показывает все версии Framework и версия CLR, которую они включают. Я нашел это очень полезным, поэтому я думал, что поделюсь.
Рядом с .NET 4.5 указано, что он включает CLR 4.
.NET 4 и .NET 4.5 (включая версии 4.5.1 и 4.5.2) находятся в версии 4.0 CLR
Подробнее: https://msdn.microsoft.com/en-us/library/8bs2ecf4(v=vs.110).aspx
.NET Framework 4.5 похожа на пакет обновления для .NET Framework 4 с некоторыми дополнительными функциями.
Скотт Гензельман имеет сообщение в своем блоге, в котором рассматривается этот вопрос. Вы можете узнать об этом здесь:
http://www.hanselman.com/blog/NETVersioningAndMultiTargetingNET45IsAnInplaceUpgradeToNET40.aspx
К сожалению, в CLR есть обновления, которые повышают производительность и добавляют новые библиотеки. CLR, используемый .NET 4.5, совместим с .NET 4. Он считается незначительным обновлением. Эти незначительные обновления - это то, что Microsoft называет обновлением на месте.