Какие функции C # 5.0 можно скомпилировать для запуска на .net 4.0 - PullRequest
8 голосов
/ 20 марта 2012

Я ожидаю, что обновления уровня платформы (такие как async) не смогут быть скомпилированы для работы на более низкой платформе, но различия компилятора (такие как область переменных цикла foreach) будут работать правильно при компиляции с C # 5.0 против. чистая 4.0? Может ли кто-нибудь предоставить точный список?

Edit:

Вместо того, чтобы просить окончательный список, который я забираю как большой спрос, сможет ли кто-нибудь ответить, будут ли изменения уровня компилятора (например, область видимости переменной foreach) вести себя по-разному при использовании C # 5.0 против более ранняя версия фреймворка.

Ответы [ 2 ]

4 голосов
/ 27 марта 2012

Все они. Нет ничего, что действительно требовало бы новой поддержки runtime - некоторые функции просто требуют новых библиотек. Но нет необходимости в том, чтобы вы компилировали его с библиотеками .NET 4.5 - вы также можете предоставить собственную реализацию того же API.

Например, добавьте следующий файл в ваш проект, чтобы включить поддержку async / await в проектах .NET 4.0: https://gist.github.com/1961087

Я не пробовал его с атрибутами информации о вызывающем абоненте, но я уверен, что они будут работать, даже если вы определите их самостоятельно, а не те, которые поставляются с .NET 4.5.

Тот же прием работает с class ExtensionAttribute в C # 3 для использования методов расширения с .NET 2.0, и вы даже можете использовать полные LINQ-to-Objects в .NET 2.0 ( LinqBridge )

3 голосов
/ 20 марта 2012

Что касается возможностей, любой синтаксис, который работает в 4.0, может быть скомпилирован в 4.0, даже если вы изначально создали его в 5.0.Visual Studio 11 сообщит вам код, который не будет работать в 4.0, если вы измените версию .NET Framework в свойствах проекта, так что это будет моим руководством.Если компиляция в 4.0 является проблемой, используйте VS 11 для редактирования, но оставьте совместимость фреймворка с 4.5.

Вероятно, есть несколько более новых FUD, которые будут компилироваться в более старую версию.Это было верно с предыдущими воплощениями, но это хит или мисс, чтобы использовать новый синтаксис и попытаться скомпилировать в обратном направлении.

Я не знаю определенного списка языковых возможностей (ключевые слова и др.) И не имеюнашел один с поиском.Я не видел спецификацию языка 4.5 в дикой природе.

...