web-dev-qa-db-ja.com

Visual Studio 2017でC#8を使用するにはどうすればよいですか?

Visual Studio 2017でC#8.0(特に範囲とnull不可の参照型)を使用したいのですが、可能ですか?

30
nonsensation

Vs2017でMicrosoft.Net.Compilersの代わりに Microsoft.Net.Compilers.Toolset を使用できます

このパッケージは、Microsoft.Net.Compilers(Windowsのみのパッケージ)およびMicrosoft.NETCore.Compilersの replacement を目的としています。これらのパッケージは現在廃止されており、将来削除される予定です。

パッケージには、MSBuild 15.0と.NET Destkop 4.7.2または.NET Core 2.1のいずれかが必要です。

パッケージ versions:

パッケージバージョンは、vs2019と比較してc#8サポートの機能をマップします。

  • バージョン3.0にはC#8.0(Visual Studio 2019バージョン16.0)のプレビューが含まれていますが、プレビュー1には2.11が使用されていました。
  • バージョン3.1にはC#8.0(Visual Studio 2019バージョン16.1)のプレビューが含まれています
  • バージョン3.2にはC#8.0(Visual Studio 2019バージョン16.2)のプレビューが含まれています
  • バージョン3.3にはC#8.0が含まれています(Visual Studio 2019バージョン16.3、.NET Core 3.0)

使い方

これらの行を.csprojに追加します

 <PropertyGroup>
     //....
    <LangVersion>8.0</LangVersion>    
    <Nullable>enable</Nullable> <!-- to support nullable reference type -->
  </PropertyGroup>

<ItemGroup>   
    <PackageReference Include="Microsoft.Net.Compilers.Toolset" Version="3.3.1" PrivateAssets="All" />
  </ItemGroup>
1
M.Hassan