Как я могу использовать С# 8 с Visual Studio 2017?

Я хотел бы использовать С# 8.0 (особенно диапазоны и необнуляемые ссылочные типы) в Visual Studio 2017. Возможно ли это?

Ответ 1

В дальнейшем Microsoft хочет более тесно связать версии на языке С# с версиями платформы, чем в прошлом. Они действительно хотят, чтобы вы использовали С# 8 с проектами .NET Core 3.x и .NET Standard 2.1, а это означает использование Visual Studio 2019. Мой ответ на вопрос Поддерживает ли С# 8.NET Framework? имеет все кровавые подробности.

Однако если вы действительно хотите , теперь вы можете использовать С# 8 в Visual Studio 2017, используя тот же трюк, который переносит С# 7 в Visual Studio 2015: установить последнюю версию пакета Nuget Microsoft.Net.Compilers в проект. Это работает, но, конечно, VS 2017 не знает о синтаксисе С# 8, поэтому выглядит не очень красиво. Вот снимок экрана, показывающий, что VS 2017 может скомпилировать небольшую библиотеку тестов, используя обнуляемые ссылочные типы и статический локальный метод (оба из которых являются функциями С# 8):

enter image description here


Вот .csproj и код, если вы хотите попробовать это:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFrameworks>netstandard2.0;net452</TargetFrameworks>
    <LangVersion>8.0</LangVersion>    
    <Nullable>enable</Nullable>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Net.Compilers" Version="3.3.1">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
    </PackageReference>
  </ItemGroup>
</Project>

-

using System;

namespace CSharp8Test
{
    public class Class1
    {
        public string? NullableString { get; } = "Test";

        public static void Test()
        {
            Console.WriteLine(Test2());
            static int Test2() => 5;
        }
    }
}

Ответ 2

Добавьте к серии 0 комментарий о главных выпусках: это правда, что новые VS обычно поставляются с новой версией С#. Однако из прошлого опыта можно было обновить предыдущую версию VS до более новой версии кода С# для компилятора, главным образом путем обновления пакета Nuget "Microsoft.Net.Compilers". Вы можете ссылаться на этот пост для получения дополнительной информации. Как использовать С# 7 с Visual Studio 2015?

Ответ 3

Итак, текущая информация:

  • Visual Studio 2019 был выпущен; это больше не в предварительном просмотре.
  • С# 8 все еще в предварительном просмотре (источник).
  • Бета-компилятор С# 8 доступен с Visual Studio 2019 или последней версией .NET Core 3.0. (источник)

Из этого я делаю вывод, что С# 8 в настоящее время не доступны в VS2017, и что никаких планов не менять.