C# 7.0 работает на.NET 4.5?

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

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

62
задан 27 February 2017 в 17:33

2 ответа

Давайте пройдем функции, новые в 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 также.

91
ответ дан 31 October 2019 в 13:59

Выполнение 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), кажется, устарели.

25
ответ дан 31 October 2019 в 13:59

Другие вопросы по тегам:

Похожие вопросы: