С какой версией .NET Framework я должен отправить; 2, 3, 3,5?

В моем приложении используется 2.0. В какой-то момент в будущем я могу начать использовать новые функции, добавленные в более поздних версиях фреймворка. Должен ли я ждать до тех пор? Или есть преимущества для обновления до последней версии .NET 3.5?

Я полагаю, что к тому времени, когда я готов к следующему spring выпуску 4.0, выйдет. Возможно, я должен придерживаться версии 2.0 для моего релиза и сохранять своих клиентов в пространстве HD и устанавливать время другой версии фреймворка?

Ответ 1

По-моему, вы должны отправить то, что нужно вашему приложению. В противном случае вы устанавливаете свою установку дольше, без каких-либо причин, и, как вы заметили, используя ваше пространство HD для клиентов снова по существу без каких-либо причин.

Ответ 2

Если вы планируете перейти на 3.5 SP1, вам следует рассмотреть возможность использования пакета установки профиля клиента .NET.NET.

.NET 3.5 SP1 представляет новый пакет настроек для разработчиков, создающих клиентские приложения .NET, называемые ".NET-профиль клиента". Это обеспечивает новый установщик установки, который обеспечивает меньший, быстрый и простой процесс установки для клиентских приложений .NET на компьютерах, на которых еще не установлена ​​.NET Framework.

Настройка профиля клиента .NET Framework содержит только те сборки и файлы в .NET Framework, которые обычно используются для сценариев клиентских приложений. Например: он включает в себя Windows Forms, WPF и WCF. Он не включает ASP.NET и те библиотеки и компоненты, которые используются в основном для сценариев сервера. Мы ожидаем, что этот пакет установки будет размером около 26 МБ, и его можно будет загрузить и установить гораздо быстрее, чем полный пакет установки .NET Framework.

Сборки и API-интерфейсы в установочном пакете клиента .NET Framework на 100% идентичны наборам в полном пакете установки .NET Framework (они являются буквально одинаковыми двоичными файлами). Это означает, что приложения могут ориентироваться как на профиль клиента, так и на полный профиль .NET 3.5 SP1 (перекомпиляция не требуется). Все .NET-приложения, которые работают с настройкой .NET Client Profile, автоматически работают с полной .NET Framework.

Ответ 3

Я всегда использую самую последнюю версию Framework. Это может быть небольшим авансом для пользователей, но у приложения намного больше времени между обновлениями. Это может или не важно для вас, но подумайте:

Если вы отправили приложение в 2005 году с использованием .NET 1.1, инфраструктура, на которой работает приложение, теперь не поддерживает основную поддержку и может иметь незапакованные уязвимости безопасности или другие серьезные проблемы, с которыми Microsoft не справляется, и которые вы не может компенсировать ваш собственный код. Ваша единственная альтернатива в 2008 году - заставить ваших пользователей обновлять версию своей рамки сейчас. И, как мы все знаем, своевременное обновление пользователей может быть проблематичным.

Аналогично, рассмотрите свою ситуацию в 2011 году. Если вы сейчас закажете программу .NET 3.5, ваше приложение будет отправлено в срок дольше. Если вы отправляете на .NET 2.0 сейчас, через несколько лет вы будете в состоянии убедить своих пользователей обновить свою фреймворк (код, который не имеет для них никакой пользы, помните), чтобы вы могли правильно поддерживайте это приложение.

Кроме того, если вы планируете реализовать функции 3.5-класса (например, LINQ to SQL в следующем году), в ваших интересах отправиться на 3.5 сейчас, а не на 2.0, так как это приведет к тому, что развертывание станет меньше проблем для вы.

Ответ 4

Вы должны распространять свое приложение с любой версией .Net - это версия, с которой вы провели наибольшее тестирование. Если вы делаете все свое развитие и тестирование в .Net 2.0, тогда отправляйте с 2.0.

Но вы можете обязать своих клиентов протестировать против 3.5 и отправиться с этим, вместо этого, ради каких-либо ошибок, которые были исправлены в рамках с момента выпуска версии 2.0. Рамка уже настолько велика, что, вероятно, нет никакой пользы для распространения более ранней версии, даже если она появилась до WCF, WPF и т.д., Если вы не платите за пропускную способность, чтобы распространять ее, или у целевого устройства есть ограниченное хранилище пространство.

Ответ 5

Помните, что "небольшое бремя" для пользователей может означать разницу между принятием и отказом вашего приложения.

Я запускаю ИТ для компании. Стандарт нашей компании - не 3.5. У вас должно быть одно действительно интересное приложение, чтобы заставить меня обновить всех до .NET 3.5, чтобы ваше приложение могло работать. Другими словами, возможно, этого не происходит. Я найду еще одно приложение, которое не добавит дополнительной "небольшой нагрузки" на наш уже перегруженный отдел IS.

Кто-то еще прокомментировал, какие функции вы собираетесь использовать. Если у 1.1 или 2.0 есть реальный набор функций, вам нужно придерживаться его.

Ответ 6

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

Ответ 7

Возможности Linq to SQL, действительно, в значительной степени Linq Extensions в целом хорошо стоят обновления.

Что касается ваших забот о пространстве HD и времени установки, IMO они не имеют отношения к большинству современных систем для более новых фреймворков. Более новые версии фреймворков (3.0 и 3.5) на самом деле просто "обновляют" рамки 2.0. Если ваши клиенты/рынок не являются более старыми ПК, я думаю, что вы получите хороший компромисс в функциональности и производительности для вашей команды разработчиков, в отличие от незначительного риска потери клиентов, поскольку они не могут рискнуть добавить еще 20 МБ на свой жесткий диск (я составил номер 20 мб, кто-то может называть BS).

Ответ 8

3.5 имеет первую версию пакета обновления, поэтому он более стабилен, чем после выпуска, но имейте в виду, что гораздо проще обновить код с 2.0 до 3.5, чем вернуться к 3.5, если по какой-либо причине вы сталкиваетесь с пробкой.

wiki article показывает новые функции очень хорошо.

Ответ 9

Я согласен с EBGreen и Крисом, но хочу добавить, что вы можете рассмотреть возможность тестирования ваше приложение против новых версий фреймворка и позволяйте вашему приложению работать с теми версиями, которые вы считаете подходящими для работы (это можно сделать с помощью некоторого трюка конфигурации, но, к сожалению, я не могу найти ссылку на него). Таким образом, ваше приложение может работать против версии, которую клиент уже установил.

Я предлагаю это, потому что:

  • Новые версии каркасов могут повысить производительность.
  • У клиента может быть установлена ​​еще одна версия на своем компьютере, и было бы постыдно, как вы говорите, тратить пространство на жестком диске.
  • Возможно, вы захотите запустить приложение в новой версии фреймворка когда-нибудь в будущем, и если ваш клиент уже имеет эту версию и работает с текущей версией приложения, на их компьютере не будет старой структуры.

Тем не менее, мне не хватает информации, которую вы можете иметь, например, средств распространения, профилирования клиентских машин и т.д.

Ответ 10

Я обнаружил, что версия 2.0 является самой легкой версией для таргетинга и развертывания, поскольку многие из них уже установлены. Если значительная часть вашей клиентской базы использует Vista, вы можете рассмотреть возможность обновления до 3.0. Версии выше, которые почти всегда требуют установки, которая может быть болью для некоторых пользователей.

Изменить: аргумент "framework version out of support" не содержит воды, поскольку 3.0 является расширением 2.0 и 3.5 является расширением этого. По определению 2.0 будет поддерживаться до тех пор, пока будет 3.5. Версия 1.1 - единственная версия, которая является полностью отдельной версией и больше не поддерживается.

Ответ 11

Один вопрос, который я хотел бы задать, каковы особенности .NET 3.5, которые вы хотели бы использовать? Многие из раздутых функций на самом деле являются функциями С# 3.0, а не функциями, специфичными для .NET 3.0/3.5, а поскольку С# 3.0 использует тот же CLR, что и .NET Framework 2.0, вы можете использовать их и в своих приложениях 2.0. Для этого требуется только VS 2008.

Примеры:

  • Лямбда-выражения
  • Инициализаторы объектов
  • Анонимные типы
  • Локальный тип вывода типа
  • Методы расширения

Я использую многие из них в своих проектах .NET 2.0 без проблем.

Если вам нужны конкретные функции фреймворка (например, Linq, WPF и т.д.), вам придется обновить.

Ответ 12

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

Если у вас есть несколько запасных циклов, вы можете перенести отдельную ветку своих приложений в SCM, которая работает с версией 3.5 Runtime, и когда вам действительно нужно обновить, у вас есть рабочая ветка (если вы ее поддерживаете к-date с некоторым слиянием раз в две недели).

Ответ 13

Не забывайте, что .Net 4.0 будет немного отличаться от предыдущих версий фреймворка..Net 4.0 будет установлен бок о бок (SxS).Net 3.5 и обратно. Если вы обновите приложение, чтобы использовать .Net 4.0, то ваши долгосрочные пользователи (как и предыдущие версии) будут вынуждены установить совершенно новую версию фреймворка.

Если вы рассматриваете, сколько дискового пространства вы собираетесь использовать на клиентских машинах с вашим приложением и каркасом, не забудьте это "скрытое" использование дополнительного пространства. Если теперь вы обновляете свое приложение с 2.0 до 3.5, ваше приложение сможет работать дольше с полной функциональностью, не заставляя пользователя устанавливать вторую структуру, которая использует еще 20 МБ пространства.

Ответ 14

.net 3.5sp1 bootstrapper слишком медленный, особенно если вы используете приложение asp.net(по сравнению с формами Windows), на машине, на которой есть только .net 2.0, она загружает всю структуру, и это означает, что вы смотрите на 20-30 минут загрузки + время установки при умеренном подключении к Интернету и скорости машины.