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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
11
0
4 815
14

Ответы 14

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

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

Nader Shirazie 23.06.2009 23:43

@ Надер Ширази: это не совсем так. Например, у меня есть приложение, написанное на .NET 2.0. Но в Windows 8 RP по умолчанию включена только .NET 4.0. И большой сюрприз: оказалось, что .NET 4.0 не имеет обратной совместимости. Итак, мой установщик предлагает пользователю установить .NET 2.0 с сайта Microsoft. Но когда вы попытаетесь установить Windows, это не позволит вам, потому что уже доступна более новая версия. Единственный обходной путь - позволить пользователю активировать .NET 3.5 (включая .NET 2.0) вручную из меню «добавить программы и функции», что не очень удобно для пользователя.

Jules Colle 24.09.2012 22:12

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

«Новые языковые возможности» на самом деле отсутствуют в .NET 3.5, они есть в VS2008. Вы по-прежнему можете использовать C# 3 с .NET framework 2.0

Will Dean 01.11.2008 00:23

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

Nader Shirazie 23.06.2009 23:41

Возможности Linq to SQL, ну, в целом, расширения Linq в целом заслуживают обновления.

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

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

вики-статья очень хорошо показывает новые возможности.

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

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

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

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

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

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

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

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

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

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

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

Обновлено: аргумент «версия фреймворка выходит из поддержки» не имеет значения, поскольку 3.0 является расширением 2.0, а 3.5 является его расширением. По определению 2.0 будет поддерживаться, пока есть 3.5. Версия 1.1 - единственная версия, которая является полностью отдельной средой выполнения и больше не поддерживается.

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

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

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

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

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

Примеры:

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

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

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

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

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

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

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

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

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

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

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

Другие вопросы по теме