Будет ли .NET 4.5 представлять новую версию CLR? - PullRequest
30 голосов
/ 11 января 2012

В прошлом не каждая новая версия .NET поставлялась с новой версией CLR. Я знаю .NET 1.0, 1.1, 2.0 и 4.0, но .NET 3.0 и 3.5 нет.

.NET 4.5 представит новый CLR? И как можно узнать, есть ли новый CLR?

Ответы [ 7 ]

28 голосов
/ 11 января 2012

Да, в .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()
17 голосов
/ 11 января 2012

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

14 голосов
/ 17 июля 2012

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

Со страницы .NET Framework версии и зависимости на MSDN:

.NET Framework 4.5 RC - это обновление на месте, которое заменяет .NET Framework 4 на вашем компьютере. После установки этого обновления ваши приложения .NET Framework 4 должны продолжать работать без перекомпиляции. Однако некоторые изменения в .NET Framework могут потребовать внесения изменений в код вашего приложения.

Кроме того, из блога .NET Framework :

.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;
}
2 голосов
/ 27 августа 2013

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

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

1 голос
/ 18 сентября 2015

.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

0 голосов
/ 05 декабря 2013

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

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

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

0 голосов
/ 16 октября 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...