Работает ли 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 не поддерживается. Так ли это, или есть какой-то способ заставить новый язык работать в этой среде выполнения тоже?
2 ответов:
поехали через новые функции в C# 7.0:
кортежи: The
System.ValueTupleпакета есть версия дляportable-net40+sl4+win8+wp8профиль. Это означает, что он может использоваться на .Net 4.0. (Не уверен, почему список зависимостей только .Net 4.5.)если вы хотите использовать кортежи на еще более низких версиях .Net, он все равно должен работать, пока вы добавляете код
ValueTupleи смежных видов в свой проект.
outпеременные, сопоставление шаблонов, локальные функции, более выраженные члены,throwвыражения, улучшения синтаксиса числовых литералов: все эти функции являются просто синтаксическим сахаром, поэтому им не нужны никакие новые возможности из фреймворка.
reflocals и returns: эта функция предоставляет в C# то, что фреймворк поддерживал с самого начала, поэтому никаких изменений в фреймворке здесь не требуется любой.обобщенные асинхронные типы возврата: чтобы использовать эту функцию, вам нужен тип, который имеет
AsyncMethodBuilderатрибут, который находится в theSystem.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