そろそろ C# 12 の時期なので予習を始めなければなりません。
というわけで公式サイトを見てみると .NET 8 SDK のプレビュー版か Visual Studio の Preview 版で試せるとのこと。
偶然、PC に .NET の Preview 版が入っていたので試してみました。
.NET の確認
> dotnet --version 8.0.100-preview.7.23376.3
■ プロジェクトの新規作成
普通にプロジェクトを新規作成します。
> dotnet new console -n ConsoleAppNetPreview
■ 出来上がった .csproj
普通の .csproj が出来上がります。
> cat .\ConsoleAppNetPreview\ConsoleAppNetPreview.csproj <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net8.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> </Project>
■ C# 12 のプログラム
このプロジェクトに C# 12 のコードを書いてみます。
> cat .\ConsoleAppNetPreview\Program.cs // 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; } }
■ ビルド - 失敗
で、ビルドすると失敗します。
> dotnet build .\ConsoleAppNetPreview\ConsoleAppNetPreview.csproj MSBuild のバージョン 17.8.0-preview-23367-03+0ff2a83e9 (.NET) 復元対象のプロジェクトを決定しています... 復元対象のすべてのプロジェクトは最新です。 C:\Program Files\dotnet\sdk\8.0.100-preview.7.23376.3\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets(314,5): message NETSDK1057: プレビュー版の .NET を使用しています。https://aka.ms/dotnet-support-policy をご覧ください [C:\XXXXXXXX\ConsoleAppNetPreview\ConsoleAppNetPreview\ConsoleAppNetPreview.csproj] C:\XXXXXXXX\ConsoleAppNetPreview\ConsoleAppNetPreview\Program.cs(5,11): error CS8652: 機能 'プライマリ コンストラクター' は現在、プレビュー段階であり、*サポートされていません*。プレビュー機能を使用するには、'preview' 言語バージョンを使用してください。 [C:\XXXXXXXX\ConsoleAppNetPreview\ConsoleAppNetPreview\ConsoleAppNetPreview.csproj] ビルドに失敗しました。 C:\XXXXXXXX\ConsoleAppNetPreview\ConsoleAppNetPreview\Program.cs(5,11): error CS8652: 機能 'プライマリ コンストラクター' は現在、プレビュー段階であり、*サポートされていません*。プレビュー機能を使用するには、'preview' 言語バージョンを使用してください。 [C:\XXXXXXXX\ConsoleAppNetPreview\ConsoleAppNetPreview\ConsoleAppNetPreview.csproj] 0 個の警告 1 エラー 経過時間 00:00:0X.XX
■ 'preview' 言語バージョンを使用する
おこられたとおりに、'preview' 言語バージョンを使用するように .csproj を書き換えます。
次の要素を追加します。
<LangVersion>Preview</LangVersion>
> cat .\ConsoleAppNetPreview\ConsoleAppNetPreview.csproj <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net8.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <LangVersion>Preview</LangVersion> </PropertyGroup> </Project>
■ もう一度ビルド
もう一度ビルドします。
> dotnet build .\ConsoleAppNetPreview\ConsoleAppNetPreview.csproj MSBuild のバージョン 17.8.0-preview-23367-03+0ff2a83e9 (.NET) 復元対象のプロジェクトを決定しています... 復元対象のすべてのプロジェクトは最新です。 C:\Program Files\dotnet\sdk\8.0.100-preview.7.23376.3\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets(314,5): message NETSDK1057: プレビュー版の .NET を使用しています。https://aka.ms/dotnet-support-policy をご覧ください [C:\XXXXXXXX\ConsoleAppNetPreview\ConsoleAppNetPreview\ConsoleAppNetPreview.csproj] ConsoleAppNetPreview -> C:\XXXXXXXX\ConsoleAppNetPreview\ConsoleAppNetPreview\bin\Debug\net8.0\ConsoleAppNetPreview.dll ビルドに成功しました。 0 個の警告 0 エラー 経過時間 00:00:0X.XX
成功しました。
■ 実行
実行します。
> dotnet run --project .\ConsoleAppNetPreview\ConsoleAppNetPreview.csproj Hello, World!
計算通り! 実行できました。これで C# 12 を試せます。