Есть ли преимущества компиляции для .NET Framework 3.5 вместо 2.0? - PullRequest
10 голосов
/ 16 сентября 2008

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

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

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

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

Edit2: кажется, нет никаких преимуществ.

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

Edit4: Итак, на данный момент мы согласны, что нет никаких преимуществ.

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

Ответы [ 8 ]

5 голосов
/ 16 сентября 2008

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

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

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

2 голосов
/ 16 сентября 2008

В отношении .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
1 голос
/ 16 сентября 2008

Если ваша сборка .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

1 голос
/ 16 сентября 2008

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

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

1 голос
/ 16 сентября 2008

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

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

1 голос
/ 16 сентября 2008

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

1 голос
/ 16 сентября 2008

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

0 голосов
/ 16 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...