Сборки, использующие код C # 2.0, скомпилированные с C # 3.0 - PullRequest
11 голосов
/ 13 августа 2008

Это должно быть прекрасно, поскольку 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.

Ответы [ 3 ]

6 голосов
/ 13 августа 2008

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

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

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

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

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

2 голосов
/ 13 августа 2008

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

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

1 голос
/ 13 августа 2008

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

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

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