[C#] netstandard 環境で最新の C# 言語機能を使う方法

2023-11-13 (月)

.NET Standard や .NET Framework 開発環境においても、最新の C# 機能、.NET API を使用するための方法です。

環境

  • .NET 7.0.403
  • C# 11.0
  • Visual Studio 2022 Version 17.7.6
  • Windows 11 Pro 22H2 22621.2428

結論

以下の点から PolySharp を使用してみました。

  • 最新 C# 言語機能が使える。
  • ソースジェネレーターで提供される。
  • 提供されるクラスは internal である。
  • 余分な依存関係が無い (.NET ポリフィルは無しで良い)。
  • メジャーなライブラリであり、メンテナンスされている。

NuGet で PolySharp をインストールして、.csproj<LangVersion>latest</LangVersion> を記述すれば使用できます。
.csproj は以下のようになります。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <LangVersion>latest</LangVersion>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="PolySharp" Version="1.13.2">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
  </ItemGroup>

</Project>

説明

ポリフィルにも2つの目的があります。

  • C# 言語機能を使用できるようにするコンパイラーのポリフィル
  • .NET 6 以降などに追加された API を使用できるようにするためのポリフィル

ざっと調べた感じの一覧です。

ライブラリソースジェネレーターC# ポリフィル.NET ポリフィルGitHub Stars
PolySharp1.4k
Polyfill155
Theraot151
Meziantou.Polyfill31
PolyShim21
PolyKit10
InternalReservedAttributeGenerator2
InternalReservedAttributeContent4

感謝

2023-11-13 (月)