Сборки, использующие код C # 2.0, скомпилированные с C # 3.0

Это должно быть хорошо видно, так как CLR на самом деле не изменился?

Коробки работает код C # 2.0 уже имели .NET 3.5 выкатила.

Фоном является то, что у нас есть служба Windows (.NET 2.0 exe, созданная с VS2005, развернутая на ~ 150 серверах), которая динамически загружает сборки (почти как плагины) для выполнения различных заданных заданий. Всякий раз, когда мы выпускаем новую версию логики шины, мы просто сбрасываем сборки на FTP-сервере, и служба Windows знает, как проверять, получать и сохранять последние версии. Новые сборки теперь создаются с использованием VS2008 и нацелены на .NET 2.0, мы знаем, что это работает нормально. Однако мы хотели бы начать использовать возможности языка C # 3.0, такие как LINQ, и нацеливать сборки на .NET 3.5 без необходимости создания и развертывания новой версии службы Windows.

13.08.2008 06:17:00
3 ОТВЕТА
РЕШЕНИЕ

C # 3 и .Net 3.5 добавляет новые сборки, но IL не меняется.

Это означает, что с помощью сборок .Net 2 вы можете компилировать и использовать C # 3, если вы не используете Linq или что-либо еще, ссылающееся на System.Linq или System.Core.

yield, varЛямбда синтаксис, типы Анон и инициализаторов все компилятор сообразительности. IL, который они производят, является кросс-совместимым.

Если вы можете сослаться на новые сборки для 3.5, все должно работать.

Нет новой версии ASP.Net - она ​​должна быть 2.0.50727 - но вы все равно должны скомпилировать для 3.5

6
13.08.2008 06:58:35

Это интересные вещи. Я смотрел на LinqBridge вчера после того, как кто-то на этом форуме предложил мне это, и они делают то же самое.

Мне кажется странным, что Microsoft назвала фреймворки 2.0, 3.0 и 3.5, когда все они компилируются, чтобы создать тот же IL, который требуется для 2.0 CLR. Я бы подумал, что добавление версий в 2.0 имело бы больше смысла, хотя я полагаю, что людям также сложно понять, что существуют разные версии сред выполнения, компиляторов и языков.

1
13.08.2008 07:27:19

yield, var, лямбда-синтаксис, типы anon и инициализаторы - все это разумно для компилятора. IL, который они производят, является кросс-совместимым.

Незначительная точка слияния, но урожай в любом случае составлял 2,0.

2
13.08.2008 08:03:02