Есть ли какие-либо преимущества при компиляции для .NET Framework 3.5 вместо 2.0?

StackOverflow https://stackoverflow.com/questions/66759

Вопрос

Есть ли какие-либо преимущества при компиляции для .NET Framework 3.5 вместо 2.0?

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

Лично я так не думаю, но возможно я что-то упустил.

Редактировать:Конечно, в фреймворке 3.5 есть больше возможностей, но это не является предметом данного вопроса.

Редактировать2:Кажется, преимуществ нет.

Редактировать3:Да, я имел в виду ориентацию на Framework.Я установил последнюю версию 3.5 SP1 и VS 2008, так в чем же разница между компиляцией и использованием платформы?Я могу настроить фреймворк в параметрах проекта, но как мне «скомпилировать» конкретную версию фреймворка?Я не знал, что есть разница.

Редактировать4:Так что пока мы согласны, что преимуществ нет.

Спасибо за ваши мнения

Это было полезно?

Решение

Есть разница между компиляцией и таргетингом.

Компиляция кода с помощью (например) компилятора C# 3.0, вероятно, даст вам прирост производительности (во всяком случае, очень небольшой), поскольку могла быть включена некоторая оптимизация сгенерированного IL-кода.Он также позволяет вам использовать некоторые новые функции, такие как автоматические свойства или лямбда-выражения.

Ориентация на данную платформу гарантирует, что ваша сборка будет работать для этой платформы (и последующих версий) и не будет работать, если вы нацеливаетесь на 2.0 и используете библиотеку 3.5.Никакие улучшения производительности не будут напрямую связаны с этим, если только вы не замените класс из одной среды другим «самым быстрым» классом.Например, ориентация на .NET 1.1 не позволит вам использовать дженерики, и поэтому вам придется использовать ArrayList, который значительно медленнее, чем List (из-за упаковки и распаковки).

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

В отношении .NET 2.0 и .NET 3.5 следует помнить две вещи.

  1. .NET Framework 3.5 — это всего лишь несколько библиотек, работающих поверх .NET 2.0.
  2. При разработке в Visual Studio 2008 и ориентации на .NET 2.0 вы по-прежнему можете использовать определенные функции языка C# 3.0, такие как методы расширения, поскольку они фактически являются функцией компилятора C# 3.0 (или .NET 3.5).См. эту ссылку: http://www.codethinked.com/post/2008/02/Using-Extension-Methods-in-net-20.aspx

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

Нет никакой пользы от компиляции в платформу 3.5, если вы не используете классы из этой версии платформы.

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

Однако, если вы говорите об использовании обновленных компиляторов, то по следующим ссылкам описаны различные изменения и критические изменения, описанные как для C#, так и для VB:

Я считаю, что с каждой версией Visual Studio поставляется свой компилятор.Например, в случае C# компилятор 2.0 поставляется с Visual Studio 2005, а компилятор C# 3.0 — с Visual Studio 2008.В зависимости от того, какую версию Visual Studio вы используете, у вас будет другой компилятор.

Выбор платформы означает, какую конкретно версию платформы вы хотите использовать в процессе компиляции;Платформы таргетинга — это новая функция Visual Studio 2008.Например, я мог бы открыть решение в Visual Studio 2008 и использовать версию 2.0 .Net.В результате у меня не будет ни одной из функций .Net 3.0 или 3.5, доступных мне во время этой компиляции, например WPF.

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

Однако если вы скомпилируете код C# с помощью компилятора C# 3.0, например,Visual Studio 2008 и подходит для .NET 3.5, но если ваша цель сборки .NET 2.0, вам все равно понадобятся только обычные библиотеки .NET 2.0, и, несмотря на это, вы фактически используете определенные функции компилятора .NET 3.5, поскольку некоторые из этих функций в конечном итоге используют только код .NET 2.0. .Подробнее об этом читайте здесь: http://weblogs.asp.net/shahar/archive/2008/01/23/use-c-3-features-from-c-2-and-net-2-0-code.aspx

В 3.5 есть классы, которых нет в 2.0.Func<...>, например.Если вы стремитесь к версии 2.0, вы не сможете их использовать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top