2020年11月27日
川俣晶の縁側ソフトウェア技術雑記 total 2525 count

.NET5時代になって重要度が高まった.NETのTFM (target framework moniker)の一覧

Written By: 川俣 晶連絡先

 Visual Studioを用いてWinFormsのプロジェクトを.NET5で作成した場合、フレームワークの種類は以下のように.NET 5.0と見えます。

Visual Studio

 それでうっかしていましたが、実はこの表示は完全にプロジェクトの内容を表していません。

 プロジェクトをアンロードしてテキストとしてプロジェクトファイルを開くと、実は以下のように書いてあります。

<TargetFramework>net5.0-windows</TargetFramework>

 つまり、ターゲットのフレームワークは.NET 5.0ではなく、-windowsが付いています。これはWindows依存の機能を含むコードのフレームワーク名、厳密にはTFM (target framework moniker)名です。依存名は-windowsに限定されず他にnet5.0-android、net5.0-ios、net5.0-macos、net5.0-tvos、net5.0-watchosもあります。

 全ての名前の一覧と説明は以下にあります。

 結局、.NET5になって全てが1つになると言われていましたが、実際にはフレームワークの種類はかなり細分化されていて、かえって増えていると思って良いと思います。

 Javaが実行環境を1つにしようとして失敗した故事を思い出しますが、.NET5において何が何でも1つにしようとしておらず、違うものは違うと分かれているのは往時のJavaとは違う希望ではあります。

 少なくとも、ASP.NET Coreプロジェクトは以下の通りで機種依存がないので、そのままLinuxサーバで実行できる可能性はありそうです。

<TargetFramework>net5.0</TargetFramework>