Работает ли C# 7.0 for.NET 4.5?



Я создал проект в Visual Studio 2017 RC, чтобы проверить, можно ли использовать новые функции языка C# 7.0 в проекте .NET Framework 4.5. Мне кажется, что после ссылки System.ValueTuple NuGet, новые кортежи работают нормально. Есть ли что-нибудь еще, о чем я должен думать, или это сработает?



после проверки System.ValueTuple зависимости NuGet, похоже, что .NET Framework 4.0 не поддерживается. Так ли это, или есть какой-то способ заставить новый язык работать в этой среде выполнения тоже?

618   2  

2 ответов:

поехали через новые функции в C# 7.0:

  • кортежи: The System.ValueTuple пакета есть версия для portable-net40+sl4+win8+wp8 профиль. Это означает, что он может использоваться на .Net 4.0. (Не уверен, почему список зависимостей только .Net 4.5.)

    если вы хотите использовать кортежи на еще более низких версиях .Net, он все равно должен работать, пока вы добавляете код ValueTuple и смежных видов в свой проект.

  • out переменные, сопоставление шаблонов, локальные функции, более выраженные члены,throw выражения, улучшения синтаксиса числовых литералов: все эти функции являются просто синтаксическим сахаром, поэтому им не нужны никакие новые возможности из фреймворка.

  • ref locals и returns: эта функция предоставляет в C# то, что фреймворк поддерживал с самого начала, поэтому никаких изменений в фреймворке здесь не требуется любой.

  • обобщенные асинхронные типы возврата: чтобы использовать эту функцию, вам нужен тип, который имеет AsyncMethodBuilder атрибут, который находится в the System.Threading.Tasks.Extensions пакета (вместе с одним таким типом, ValueTask<T>). Этот пакет поддерживается только на .Net 4.5, поэтому для .Net 4.0 вам нужно будет скомпилировать соответствующих видов себя. (Используя awaitна .Net 4.0 также требуется Microsoft.Bcl.Async, но в этом нет ничего нового.)

подводя итог: все C# 7.0 должен работать на .Net 4.5 после установки необходимых пакетов, и большинство из них должны работать на .Net 4.0 тоже.

запуск скомпилированного приложения C# 7 на .NET 4.5 должен быть в порядке на данный момент, но обратите внимание, что запуск ASP.NET приложения, которые используют ASP.NET динамическая компиляция не будет работать на .NET 4.5, поскольку компилятор C# 7.0 требует запуска .NET 4.6.

Источник:https://github.com/dotnet/roslyn/issues/17908:

компилятор C# 7.0 (2.0 и выше) требует .NET 4.6 для запуска

информация о https://www.nuget.org/packages/Microsoft.Net.Compilers/2.0.1 (о поддержке .NET 4.5), кажется, устарели.

Comments

    Ничего не найдено.