Я создал проект в RC Visual Studio 2017, чтобы проверить, могу ли я использовать новые функции C# 7.0 функции языка в Платформе.NET 4,5 проекта. Мне что после ссылки кажется System.ValueTuple
NuGet, новые кортежи хорошо работают. Есть ли что-либо еще, о чем я должен думать, или это собирается работать?
После проверки System.ValueTuple
Зависимости NuGet, похоже, что Платформа.NET 4.0 не поддерживается. Имеет место это или там некоторый способ заставить новый язык работать в этом времени выполнения также?
Давайте пройдем функции, новые в C# 7.0:
Кортежи: System.ValueTuple
пакет имеет версию для эти portable-net40+sl4+win8+wp8
профиль. Это означает, что это применимо на.Net 4.0. (Не уверенный, почему зависимости перечисляют только.Net 4.5.)
, Если Вы хотели использовать кортежи на еще более низких версиях .NET, он должен все еще работать, пока Вы добавляете код для ValueTuple
и связанные типы к Вашему проекту.
out
переменные, сопоставление с образцом, локальные функции, больше участников с телом выражения, throw
выражения, числовые литеральные улучшения синтаксиса: Всеми этими функциями является просто сахар синтаксиса, таким образом, им не нужны никакие новые возможности от платформы.
ref
местные жители и возвраты: Эта функция выставляет в C#, что платформа, поддерживаемая начиная с запуска, таким образом, никакие изменения в платформе не необходимы здесь также.
Обобщенные асинхронные типы возврата: Для использования этой функции Вам нужен тип, который имеет эти AsyncMethodBuilder
атрибут, который находится в [1 114] 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. Сеть. Компиляторы/2.0.1 (о поддержке.NET 4.5), кажется, устарели.