[小菜一碟] 如何在 .NET 5 之前的專案中使用 C# 9 的語法?

使用 .NET 5 開起來的專案,預設就能使用 C# 9 的語法,那麼 .NET 5 以前的 .NET Core 2/3、.NET Framework 4.x 專案是不是就不能用 C# 9 的語法? 非也非也,只要調整幾個小地方,.NET 5 之前的專案一樣可以使用 C# 9 的語法。

Visual Studio 2019 16.8 以上

首先,我們要確認 Visual Studio 2019 至少是 16.8 以上的版本,MSBuild 也是一樣,而 .NET Core SDK 至少要是 5.0.100 以上的版本,這些版本才有包含 C# 9 的 Compiler。

LangVersion

再來,我們要修改 *.csproj 的專案檔,增加下面的內容:

<PropertyGroup>
  <LangVersion>9</LangVersion>
</PropertyGroup>

IsExternalInit

我們還可能會遇到一個錯誤訊息:

CS0518: 未定義或匯入預先定義的類型 'System.Runtime.CompilerServices.IsExternalInit'

IsExternalInit 這個類別在 .NET 5 才有定義,如果不是 .NET 5 的專案,在編譯的時候就會跳出這個錯誤,要修正這個錯誤,我們可以在專案中新增 IsExternalInit.cs 檔案,檔案的內容如下:

using System.ComponentModel;

namespace System.Runtime.CompilerServices
{
    [EditorBrowsable(EditorBrowsableState.Never)]
    internal static class IsExternalInit
    {
    }
}

這樣做了之後,我們就可以在 .NET 5 之前的專案使用 C# 9 的語法了。

參考資料

C# 指南ASP.NET 教學ASP.NET MVC 指引
Azure SQL Database 教學SQL Server 教學Xamarin.Forms 教學