Ответ 1
Нет..NET 4.0 является автономным CLR, он НЕ основан на 2.0, в отличие от 3.0 и 3.5
У меня возникла странная проблема. Я установил "Visual Studio 2010 final". При установке он показал, что он успешно установил .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. Пожалуйста, очистите эту путаницу.
Нет..NET 4.0 является автономным CLR, он НЕ основан на 2.0, в отличие от 3.0 и 3.5
.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. Какую ОС вы используете?
Проблема в том, что есть две "вещи", когда вы ссылаетесь на .NET 2.0
или .NET 4.0
.
Верно, что:
Использование полезной диаграммы из Microsoft .NET Framework Версии и зависимости:
Проблема заключается в том, что Framework отличается от Runtime. Существуют версии шесть.NET Framework, но только четыре версии .NET CLR (Common Language Runtime):
Это означает, что если вы устанавливаете .NET Framework 4, вы все равно можете использовать классы, которые вы использовали в .NET 2. Но если вашему приложению требуется версия 2 CLR, она не будет работать - поскольку этот CLR 2.0 не установлен с .NET Framework 4.0.
Как уже говорили другие,.NET 4.0 имеет новую среду CLR, которая отличается от CLR.NET 2.0.
По умолчанию приложение будет пытаться запустить на CLR, с которым он был создан.
Вы можете изменить файл applications.exe.config с помощью <SupportedRuntime> элемент, чтобы явно указать системе, которая поддерживает приложение (порядок задает предпочтение):
<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, а также - бок о бок установки нескольких версий полностью поддерживаются.
Если я не ошибаюсь, 2010 нацеливает инфраструктуру .NET 4.0. Похоже, что у вас отсутствует инфраструктура .Net 2.0 на вашем компьютере.
насколько я знаю, CLR v2.0.50727 работает выше v4.0.30319
Да и нет - вы можете запускать код .NET 2 во время выполнения .NET 4, но они являются отдельными механизмами времени исполнения.
В зависимости от того, как установщик проверяет .NET, он не должен обнаруживать 4 или, возможно, отклонять его как неправильное: как никогда безопасно запускать код в точной среде, в которой он был разработан.
2/3.5 - параллельная установка. Я бы посоветовал вам просто установить его - это не должно вызывать никаких проблем.