そろそろ C# 12 の時期なので予習を始めなければなりません。
というわけで公式サイトを見てみると .NET 8 SDK のプレビュー版か Visual Studio の Preview 版で試せるとのこと。
learn.microsoft.com
.NET 8 SDK のプレビュー版と Visual Studio の Preview 版で試してみました。
rksoftware.hatenablog.com
rksoftware.hatenablog.com
と、試したところで気になるのは普通の Visual Studio。普通の Visual Studio で試してみます。
■ プロジェクトの新規作成
プロジェクトの新規作成時のウィザードで .NET のバージョンを選択できるのですが、.NET 8.0 は選択できません。.NET 7.0 を選択して進めます。
出来上がった .csproj 。
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net7.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> </Project>
■ .NET 8.0 にしてみる
出来上がった .csproj を編集して .NET 8.0 にしてみるとエラーになります。まあそうなりますよね。
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net8.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> </Project>
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 エラー NETSDK1209 現在の Visual Studio バージョンは、ターゲット .NET 8.0 をサポートしていません。 ターゲット .NET 7.0 以下、または Visual Studio バージョン 17.8 以上を使用してください
■ C# 12 のコードを書いてみる
.NET 7.0 に戻して、C# 12 のコードを書いてみます。
// See https://aka.ms/new-console-template for more information Console.WriteLine(new Test("Hello, World!").Name()); class Test(string name) { public string Name() { return name; } }
エラーになります。順当。
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 エラー CS8652 機能 'プライマリ コンストラクター' は現在、プレビュー段階であり、*サポートされていません*。プレビュー機能を使用するには、'preview' 言語バージョンを使用してください。
■ 'preview' 言語バージョンを使用
エラーメッセージに従って 'preview' 言語バージョンを使用してみます。 .csproj に次の要素を追加します。
<LangVersion>Preview</LangVersion>
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net7.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <LangVersion>Preview</LangVersion> </PropertyGroup> </Project>
■ エラーでない!
エラーにならずにビルドできました!
■ 実行
実行できます!
今回の環境は .NET プレビュー版が入っていたからだと思いますが、Preview 版でない普通の Visual Studio でも C# 12 が書けました。
人類の 99.98% の皆さんは Visual Studio の Preview 版が入っているので関係ないでしょうか、0.02% の特殊な事情で Preview 版を入れられない方も安心ですね。