На мой взгляд, нет веской причины не переходить на 3.5.
Настоящая особенность убийцы заключается в том, что вы можете продолжать ориентироваться на более старые версии среды выполнения (2.0+), используя все новые языковые функции. Таким образом, вы можете использовать новые лямбда-выражения, методы расширения, анонимные типы и другие полезные вещи. И если ваши клиенты по-прежнему в основном используют платформу 2.0, вы можете продолжить ориентироваться на более раннюю среду выполнения.
(Только не используйте ни один из классов из инфраструктуры 3.5, если вам нужно ориентироваться на более ранние версии времени выполнения.)
Лично я думаю, что если вы работаете с настольным GUI-приложением, лучше всего использовать фреймворк 3.0 или 3.5, так как WPF - лучшая библиотека пользовательского интерфейса, с которой я когда-либо работал (долгое время).
С другой стороны, если вы уже написали большую часть своего графического интерфейса в WinForms, вас может заинтересовать интегрированная среда 3.5, которая позволяет (ограниченно) смешивать элементы WinForms и WPF GUI. Вы можете сохранить работу, которую уже проделали, но добавьте несколько приятных штрихов тут и там, где это имеет смысл, с помощью элементов управления WPF.
Другая удобная особенность фреймворка 3.5 - «Инициализаторы коллекций». Проверьте это:
var myDictionary = new Dictionary<String, String> {
{ "key-1", "value-1" },
{ "key-2", "value-2" },
{ "key-3", "value-3" },
};
Аккуратно, да?
Мне бы понравилось немного лучше, если бы он был немного более похож на JSON. Но это все равно очень удобная функциональность.
Любое событие, которое вы можете назначить на этот код для среды выполнения 2.0!