Нужно ли обновлять версию CLR для .NET Framework 4.7.2?

Я понимаю разницу между .NET Framework и средой выполнения (CLR). Тем не менее, версия меня немного озадачивает.

За последние 8 лет или около того количество версий .NET Framework увеличилось, но версия CLR, похоже, осталась на уровне 4.0. В CLR не вносились изменения?

Означает ли это также, что на веб-сервере для запуска приложения, созданного с использованием 4.7.2, если установлена ​​среда выполнения версии 4.0, оно все равно будет работать?

На веб-сайте Microsoft я вижу, что пакет Runtime загружается отдельно.

Заранее спасибо.


person Tophat Gordon    schedule 15.10.2018    source источник


Ответы (1)


Каждая версия имеет дополнительные функции и, возможно, содержит изменения CLR. Если вы используете какую-либо из этих функций, вы не сможете работать с меньшей версией.

Система версий .NET довольно запутана. Вы не можете многое узнать из самих целых чисел версии. Но в этом нет необходимости. Что имеет значение, так это просто последовательность версий.

Существует три эпохи версий: 1.x, 2-3.x, 4.x. Сборки должны быть скомпилированы для одного из них и могут быть загружены только там. Сейчас для большинства людей важна только версия 4.x.

Вы можете ориентироваться на более ранние версии в Visual Studio. Тогда компилятор позволит вам использовать только те API, которые доступны в этой версии. Таким образом, вы можете быть уверены, что можете работать с более ранними номерами версий. Это не на 100% отказоустойчиво, так как произошли изменения в поведении. Но совместимость с .NET в целом чрезвычайно высока.

Для приложений, которые вы развертываете в своей собственной инфраструктуре, я настоятельно рекомендую синхронизировать все компьютеры разработчиков и рабочие машины с одной версией .NET, если это возможно. Таким образом, у вас не возникнет проблем с совместимостью, и вы сможете полностью проигнорировать вопрос о версиях.

person usr    schedule 15.10.2018
comment
Спасибо за ответ @usr. Да, это версия, которая приводит меня в замешательство. Поэтому я думаю, что лучше игнорировать версии среды выполнения и всегда брать версию среды выполнения, которая поставляется с более новой версией фреймворка? - person Tophat Gordon; 15.10.2018
comment
Два в комплекте. У вас нет выбора в этом. Вы можете установить только что-то более высокое, чем то, что нужно вашему приложению. Это нормально в большинстве случаев. - person usr; 15.10.2018
comment
Я понимаю, что они включены в загрузку Framework, но вы можете получить среду выполнения как отдельную загрузку. На вашем веб-сервере вам нужна только среда выполнения, а не вся структура - в любом случае, я так понимаю. - person Tophat Gordon; 15.10.2018
comment
@TophatGordon - это не среда выполнения и фреймворк. Это среда выполнения по сравнению с пакетом SDK/Dev. Среда выполнения включает в себя фреймворк. - person Damien_The_Unbeliever; 15.10.2018
comment
@Damien_The_Unbeliever Здесь я взаимозаменяемо использую Framework и пакет SDK/Dev (со времен .NET Framework). Но я все еще понимаю, что это просто среда выполнения, необходимая на веб-сервере для запуска приложения .NET Core. - person Tophat Gordon; 17.10.2018
comment
@TophatGordon .NET Core и .NET Framework — это два разных продукта с разными способами их получения, среди прочих различий. Когда вы говорите о .NET Core, то часть времени выполнения — это все, что вам нужно для запуска вашего приложения, и для этого есть специальный установщик. - person Alex Ghiondea - MSFT; 17.10.2018
comment
@ Alex Ghiondea - MSFT Да, я путал терминологию. Когда я сказал Framework, я действительно имел в виду полный пакет разработчика — биты, необходимые для создания и запуска приложения. Меня смутил комментарий @Damien_The_Unbeliever о среде выполнения, включая фреймворк. - person Tophat Gordon; 17.10.2018
comment
Да, потому что до вашего предыдущего комментария казалось, что мы говорим о .NET Framework, а не о Core. И там пакет времени выполнения включает в себя все сборки фреймворка, установленные под c:\windows\microsoft.net\v<version> - person Damien_The_Unbeliever; 17.10.2018