Разве .NET 4.0 не содержит .NET 2.0? - PullRequest
12 голосов
/ 30 июня 2010

Я столкнулся со странной проблемой. Я установил «Visual Studio 2010 Ultimate». При установке он показал, что успешно установлен .NET 4.0. При установке некоторых других программ. Они жалуются на отсутствие .NET 2.0 и просят меня установить его.

Как это возможно? .NET 4.0 должен включать .NET 2.0 верно?

EDIT:

Теперь я в замешательстве. В соответствии с этим http://en.wikipedia.org/wiki/File:DotNet.svg CLR является частью .NET 2.0. Установка .NET Framework 4.0 подразумевает установку всего стека. который также включает в себя .NET 2.0. Пожалуйста, устраните эту путаницу.

Ответы [ 7 ]

13 голосов
/ 30 июня 2010

Нет..NET 4.0 - это автономный CLR, он НЕ основан на 2.0, в отличие от 3.0 и 3.5

.
8 голосов
/ 30 июня 2010

.NET 4.0 - это новая версия среды выполнения, которая не зависит от .NET 2.0.

Новая версия фреймворка не охватывает предыдущие версии, она построена как конкретная версия с определенным набором функций..NET 4.0 имеет новую среду выполнения и более новую BCL (библиотека базовых классов).BCL по существу имеет все те же типы, что и .NET 2.0 / 3.0 / 3.5 BCL (хотя и с возможными критическими изменениями), и некоторые новые вещи.Две версии платформы (v2.0 и v4.0) работают бок о бок.

Тот факт, что у вас не установлен .NET 2.0, вызывает беспокойство, поскольку он распространяется через службу Windows Update.Какую ОС вы используете?

5 голосов
/ 09 января 2013

Проблема в том, что есть две "вещи" , когда вы ссылаетесь на .NET 2.0 или .NET 4.0.

Это правда, что:

  • библиотека классов .NET 4.5 Framework
  • содержит все из библиотеки классов .NET Framework
  • содержит все из библиотеки классов .NET 3.5 SP1 Framework
  • содержит все из библиотеки классов .NET 3.0 SP2 Framework
  • содержит все из библиотеки классов .NET 2.0 SP2 Framework
  • содержит все из библиотеки классов .NET 1.1 SP1 Framework

Использование полезной диаграммы от .NET Framework и версий Microsoft : enter image description here

Проблема в том, что Framework отличается от Runtime . Существует шесть версий .NET Framework , но только четыре версии .NET CLR (Common Language Runtime):

  • CLR 1.1: поставляется с .NET Framework 1.1
  • CLR 2.0: поставляется с .NET Framework 2.0 SP2, 3.0 SP2, 3.5 SP1
  • CLR 4.0: поставляется с .NET Framework 4
  • CLR 4.5: поставляется с .NET Framework 4.5

Это означает, что если вы устанавливаете .NET Framework 4, вы все равно можете использовать классов , которые вы использовали в .NET 2. Но если вашему приложению требуется версия 2 CLR это не будет работать - потому что CLR 2.0 не установлен с .NET Framework 4.0 .

4 голосов
/ 30 июня 2010

Как уже говорили другие пользователи, в .net 4.0 есть новый CLR, который отличается от CLR в .net 2.0.

По умолчанию приложение будет пытаться работать на CLR, против которого оно было построено.

Вы можете изменить файл apps.exe.config с помощью элемента , чтобы явно указать системе, какие среды выполнения поддерживает приложение (в порядке указывается предпочтение):

<configuration>
   <startup>
      <supportedRuntime version="v2.0.50727"/>
      <supportedRuntime version="v4.0.30319"/>
   </startup>
</configuration>

(Очевидно, что если в вашем приложении есть что-то, что зависит от чего-то в .net 2.0, которое изменилось, то это все равно не получится)

К сожалению, если ваше приложение не может установить , это потому, что установщик явно проверяет, что .net 2.0 существует, а не версия> = 2.0, если вы пытаетесь найти этот файл .zip загрузка, а не установщики, но помимо этого, вы не можете ничего сделать, кроме установки .net 2.0, - параллельная установка нескольких версий полностью поддерживается.

0 голосов
/ 30 июня 2010

Да и нет - вы можете запускать код .NET 2 в среде выполнения .NET 4, но они являются отдельными механизмами времени выполнения.

В зависимости от того, как установщик проверяет наличие .NET, он не должен обнаруживать 4 или, возможно, отклоняет его как неправильный: как всегда, безопаснее всего запускать код в той среде, в которой он был разработан.2 / 3.5 - это параллельная установка.Я бы посоветовал вам просто установить его - это не должно вызывать у вас никаких проблем.

0 голосов
/ 30 июня 2010

Насколько я знаю, CLR v2.0.50727 работает выше v4.0.30319

0 голосов
/ 30 июня 2010

Если я не ошибаюсь, 2010 год нацелен на .Net 4.0 framework.Похоже, вы пропустили .Net 2.0 Framework на вашем компьютере.

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