Вы можете использовать C # 3.0 и целевой .NET 2.0. Следующие функции C # 3.0 работают отлично:
- Неявно типизированные локальные переменные (var)
- Анонимные типы
- Лямбда-выражения, преобразованные в делегаты (хотя у вас не будет делегатов Func / Action - вы можете определить их сами)
- Инициализаторы коллекции
- Инициализаторы объектов
- Неявно типизированные массивы
- Частичные методы
- Автоматические свойства
Методы расширения требуют атрибут из System.Core, но вы можете определить свой собственный.
Выражения запроса будут работать, если доступны правильные методы для вызова - так что вы можете развернуть LINQBridge и при этом иметь LINQ to Objects, например.
К сожалению, деревья выражений вообще не будут работать.
См. мою статью о версиях .NET для получения дополнительной информации.
Не пытайтесь развернуть бит версии 3.0 или 3.5 поверх системы 2.0.