Я хотел бы использовать С# 8.0 (особенно диапазоны и необнуляемые ссылочные типы) в Visual Studio 2017. Возможно ли это?
Как я могу использовать С# 8 с 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):
Вот .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, и что никаких планов не менять.