2023-11-13 (月)
[C#] netstandard 環境で最新の C# 言語機能を使う方法
.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 |
---|---|---|---|---|
PolySharp | ✅ | ✅ | 1.4k | |
Polyfill | ✅ | ✅ | 155 | |
Theraot | ✅ | ✅ | 151 | |
Meziantou.Polyfill | ✅ | ✅ | ✅ | 31 |
PolyShim | ✅ | ✅ | 21 | |
PolyKit | ✅ | ✅ | 10 | |
InternalReservedAttributeGenerator | ✅ | ✅ | 2 | |
InternalReservedAttributeContent | ✅ | 4 |
感謝
関連記事
新着記事