Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Почему микрософт не может сделать кумулятивный


Автор: belkobot 5.12.2010, 21:44
Порчему микрософт не может сделать кумулятивный фрейморк, почему, когда на компьютере установлена версия 4,0 исталлер MCV требует версию 3.5 SP1?  smile 

Автор: Экскалупатор 5.12.2010, 22:43
я думаю это что бы не было проблем с версиями. фреймворки совершенствуют, меняют и пр. если бы они были бы совместимы то все что было написано в первом фреймворке должно было бы тянутся постоянно и дальше. а так все четко, написал для 2 поставь 2 и пользуйся никто не мешает. на мой взгляд это плюс, хотя по началу я тоже не понимал зачем. но когда столкнулся пару раз с "Hell DLL"(когда библиотеки назывались одинаково, а содержимое было разным), то прочувствовал плюс такого подхода. 

Автор: jonie 6.12.2010, 00:25
пользуйте службу обновлений виндофс и никаких особых проблем не будет...

Автор: Экскалупатор 6.12.2010, 08:44
jonie, вопрос не в том как этого избежать, а в том что это может произойти в любой момент по независящим от нас причинам. а в дотнете с этим проще, если стоит 2.0, то независимо от системы или пятен на солнце то что написано под 2.0 будет работать.

Автор: KelTron 6.12.2010, 13:44
Собственно этим они решили проблему http://ru.wikipedia.org/wiki/DLL_hell

Автор: GrayCardinal 6.12.2010, 13:51
А в Linux проблему так и не решили :( Так, к слову.

Автор: Экскалупатор 6.12.2010, 16:42
GrayCardinal, было бы странно если бы микрософт решал проблемы линукса...

Автор: C4EBA 9.12.2010, 14:32
Цитата(Экскалупатор @  5.12.2010,  22:43 Найти цитируемый пост)
а так все четко, написал для 2 поставь 2 и пользуйся никто не мешает

Хм... Со второй версией понятно. А если написал для 3.5? Поставить только 3.5? Но при установке 3.5 автоматически установится и 2.0. То есть у пользователя будут стоять версии 2 и 3,5.
А если написал для 4, как belkobot, ставить только 4? Но без 3,5 программа не работает. Ставишь 3.5 - и версия 2.0 тут же устанавливается. То есть у пользователя будут стоять версии 2, 3,5 и 4???
А если немного вперед посмотреть? Появится следующая версия, допустим, она будет иметь номер 5.0. Написал программу с использованием возможностей этой, 5 версии. Что должно быть у пользователя? Правильно: версия 5. А версию 4 устанавливать? Наверное, да, потому что писать программу без возможностей этой версии было бы странно: для чего-то же ее выпустили! А версию 3,5 устанавливать? Наверняка! Ведь это - одна из мощнейших версий (WPF, LINQ и т.д. ). То есть у пользователя будут стоять v2, v3,5, v4, v5???
А если еще чуть-чуть вперед посмотреть? За последние 10 лет было выпущено 1, 1.1, 2, 3, 3.5, 4 - пять версий фрейморка. То есть в среднем одна версия в два года. И что же будет на компе у пользователя через 3-5 лет?
Вот если бы микрософт выпускал каждую новую версию фрейморка, включающую все "вкусности" предыдущих версий (пусть доработанные микрософтом как угодно, измененные микрософтом в нужную сторону) - тогда да, было бы классно: написал под 10 фрейморк, установил 10 фрейморк у пользователя - и никаких проблем,  написал под 20 фрейморк, установил 20 фрейморк у пользователя - и опять никаких проблем.

Автор: CYBERDREAM 9.12.2010, 14:39
ну а если они в 5фрэйме удалили какой то класс, и создали новый - более мощный и со всеми приблудами но с др. названием, либо удалили какой то метод. В выше предложенном способе мелким пришлось бы оставить и более старый класс, потому что программа для 4 фрэйма, а на 5-м бы рухнула.

Хотя меня интерисует что станет с этими фрэймворками через 10 лет. Как то не хочется верить что будут штамповать фрэймворки.

Автор: Экскалупатор 9.12.2010, 14:57
C4EBA
Цитата(C4EBA @  9.12.2010,  13:32 Найти цитируемый пост)
А если немного вперед посмотреть? Появится следующая версия, допустим, она будет иметь номер 5.0. Написал программу с использованием возможностей этой, 5 версии. Что должно быть у пользователя? Правильно: версия 5. А версию 4 устанавливать? Наверное, да, потому что писать программу без возможностей этой версии было бы странно: для чего-то же ее выпустили! А версию 3,5 устанавливать? Наверняка! Ведь это - одна из мощнейших версий (WPF, LINQ и т.д. ). То есть у пользователя будут стоять v2, v3,5, v4, v5???


а если немного попробовать почитать описание?
Цитата

Платформа .NET Framework обеспечивает высокий уровень поддержки обратной совместимости.

т.е. большинство приложений написанных в версии 2.0 будут работать в более поздних версиях. т.е. если перефразировать то ставить предыдущие версии не обязательно.
единственно на что можно напороться:
Цитата

Изменения платформы .NET Framework в области улучшения безопасности, правильности и функциональности могут вызывать проблемы как с прямой, так и с обратной совместимостью.

т.е. зависит от контескста проги. и не надо панику поднимать лишний раз...

Автор: C4EBA 9.12.2010, 15:04
Цитата(CYBERDREAM @  9.12.2010,  14:39 Найти цитируемый пост)
если они в 5фрэйме удалили какой то класс, и создали новый - более мощный и со всеми приблудами но с др. названием, либо удалили какой то метод

Я говорил, что "...если бы микрософт выпускал каждую новую версию фрейморка, включающую все "вкусности" предыдущих версий (пусть доработанные микрософтом как угодно, измененные микрософтом в нужную сторону) ...". НОВУЮ версию можно как угодно менять. Написав под нее программу и установив у пользователя эту новую, как угодно измененную, версию, все запуститься и будет работать. И ничего не "рухнуло" бы. Так же как сейчас обстоит дело со второй версией: написал для нее, поставил у пользователя - все гарантированно будет работать.

Добавлено через 2 минуты и 18 секунд
О какой совместимости идет речь? Просто до выхода 4 версии установка новых версий тянула за собой установку предыдущих.

Добавлено через 4 минуты и 2 секунды
Цитата(Экскалупатор @  9.12.2010,  14:57 Найти цитируемый пост)
то ставить предыдущие версии не обязательно.

Попробуйте установить 4 версию без 3.5. Или 3.5 без 2 версии.

Автор: Экскалупатор 9.12.2010, 15:32
C4EBA, ты посомтри что оно ставит. 4.0 весит 48 метров, как она может включать в себя все предыдущие версии? там как раз и есть 
Цитата(C4EBA @  9.12.2010,  13:32 Найти цитируемый пост)
 новую версию фрейморка, включающую все "вкусности" предыдущих версий
, и не требует отдельно устанавливать все предыдущие версии.

Автор: C4EBA 9.12.2010, 15:40
Ты хочешь сказать, что установив 4 версию, я смогу запустить программу, использующую 
Windows Presentation Foundation (WPF)
Windows Communication Foundation (WCF)
Windows Workflow Foundation (WF)
Windows CardSpace
язык LINQ ?

Автор: Экскалупатор 9.12.2010, 16:29
C4EBA, хз, попробуй. 
хотя беру слова про вкусности обратно. не уверен что будет все это работать. но то что 4 версию можно поставить без 3 или 3,5 это точно(только что проверил, устанавливается).

Автор: C4EBA 9.12.2010, 17:59
Цитата(Экскалупатор @  9.12.2010,  16:29 Найти цитируемый пост)
о что 4 версию можно поставить без 3 или 3,5 это точно(только что проверил, устанавливается). 

А толку от этой версии, если она одна - одинешенька, без 3 или 3.5, стоит у пользователя? Она лишь расширяет, по сравнению с 3.5, возможности по созданию программ, но не самодостаточна, насколько я понял. 

Автор: KelTron 9.12.2010, 18:50
Все версии самодостаточны, если пишешь под 4.0, не нужно тебе ничего больше. Более того, например, программу, написанную и скомпиленную под 3.5 можно спокойно запустить если стоит только 4.0, для этого просто надо добавить некую инфу в app.config:
Код

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0.30319" sku=".NETFramework,Version=v4.0"/>
    <supportedRuntime version="v2.0.50727" sku=".NETFramework,Version=v3.5"/>
  </startup>
</configuration>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)