個人的なメモ

Tomohiro Suzuki @hiro128_777 のブログです。Xamarin に関する事を中心に書いています。 Microsoft MVP for Development Technologies 2017- 本ブログと所属組織の公式見解は関係ございません。

.NET Framework から .NET 6 への移行時に便利なツール、.NET Portability Analyzer

目次

 
.NET Framework から .NET 6 への移行を行うときに便利なツールの一つに .NET Portability Analyzer があります。
このツールは、以下の2つの種類があって、使い方が少し違います。

 

 
 
公式ドキュメントは以下です。
docs.microsoft.com
 
  

なにができるの

移行先のプラットフォーム(今回なら .NET 6) で使用できない(ビルドが通らず代替が必要な) API を特定できます。
 
 

どこが便利なの

サポートされていなく手動で代替が必要な箇所を探す時に、ドキュメントを読んでサポートされていない API を手動でリストアップして、ソースコードを自分で解析するというような作業が不要で、メニューからツールを実行するだけで遅くとも数分程度でレポートを作成してくれるので、簡単に移行を実施した時に発生すると想定される作業量の見当をつけることができます。
 
このツールは移行計画を作成するときにとても便利です。
 
 

注意点

2022/02/08 現在、移行先のプラットフォームとして .NET 5 までしか対応していません。
(.NET Framework からの移行という観点では 移行先を .NET 5 に設定して利用しても実害はほとんどありません。)
 
 

使い方

Visual Studio の [ツール] -> [オプション] で設定画面が表示されるので、移行先のプラットフォームを(.NET 6 がまだないので、.NET 5)をチェックします。
f:id:hiro128:20220208163915p:plain
 
 
プロジェクトの右クリックメニューから、[Analyze Project Portability] を実行します。
f:id:hiro128:20220208164732p:plain
 
 
分析が始まります。
f:id:hiro128:20220208165134p:plain
 
 
レポートが作成されるので開いてみましょう。
f:id:hiro128:20220208165613p:plain
 
 
移植性のサマリーの値が 「98.45%」になっているので、移植できない API が含まれていることがわかります。
f:id:hiro128:20220208221750p:plain
 
 
サポートされていない API が何かを確認するには、「Details」のシートを確認するとわかります。
DataGridとそのメンバーが Not supported になっています。
f:id:hiro128:20220208222218p:plain
よって、このアプリではDataGridを .NET6で利用できる API に変更しなければいけないことがわかります。
このような手順で、サポートされていない API をリストアップすることができます。

リストアップできたら、そのAPIについて調査します。
例えばDataGridについて docs.microsoft.com でリファレンスを確認すると「代わりに DataGridViewコントロールを使用してください。」と記載されておりますので、DataGridDataGridViewに置き換えればよいことになります。
 
 

今回のサンプルコード

.NET Portability Analyzer を利用すると、このような感じでサポートされていない API を簡単にリストアップできます。
なお、今回ツールを実行したプロジェクトのサンプルコードは以下にありますので、試してみたい方は参照してみてください。
github.com
 
 
.NET Framework から .NET 6 への移行計画については以下を参照ください。
hiro128.hatenablog.jp
 
.NET アップグレード アシスタントについては以下を参照ください。
hiro128.hatenablog.jp