Будет ли .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?

Ответ 1

Да,.NET 4.5 имеет бренд, шлепающий новую версию CLR, вы можете прочитать об улучшениях в;

http://blogs.microsoft.co.il/blogs/sasha/archive/2011/09/17/improvements-in-the-clr-core-in-net-framework-4-5.aspx

Прояснить; это новая версия CLR, которая фактически заменяет версию 4.0, поэтому вопрос о том, следует ли назвать ее обновлением или новой CLR, является спорным.

Чтобы указать версию CLR, в которой вы работаете, используйте

System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion()

Ответ 2

Нет, это еще версия 4.0.30319. Новая версия clr.dll и друзей заменит существующие на вашем компьютере. Та же схема, что и в .NET 3.0, 3.5 и 3.5SP1. Чтобы проверить, установлен ли 4.5, требуется тот же подход, что и те версии, проверить реестр.

Ответ 3

Да. Версия версии CLR изменяется от 4.0.30319.269 до 4.0.30319.17379. Таким образом, CLR является новым, но он обратно совместим с .NET 4.0 CLR. Вам не нужно перекомпилировать код, написанный и скомпилированный .NET v4.0.

На странице .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;
}

Ответ 4

Хотя я сомневаюсь, что это было доступно в текущем формате во время вопроса, вот Руководство по CLR на MSDN, где он показывает все версии Framework и версия CLR, которую они включают. Я нашел это очень полезным, поэтому я думал, что поделюсь.

Рядом с .NET 4.5 указано, что он включает CLR 4.

Ответ 6

.NET Framework 4.5 похожа на пакет обновления для .NET Framework 4 с некоторыми дополнительными функциями.

Ответ 7

Скотт Гензельман имеет сообщение в своем блоге, в котором рассматривается этот вопрос. Вы можете узнать об этом здесь:

http://www.hanselman.com/blog/NETVersioningAndMultiTargetingNET45IsAnInplaceUpgradeToNET40.aspx

К сожалению, в CLR есть обновления, которые повышают производительность и добавляют новые библиотеки. CLR, используемый .NET 4.5, совместим с .NET 4. Он считается незначительным обновлением. Эти незначительные обновления - это то, что Microsoft называет обновлением на месте.