.NETポータビリティアナライザー







.NET Portability Analyzerはまったく新しいアプリケーションではありません。これは、.NET Standardの登場により、開発者にとって興味深いものになるはずです。 コードの移植性は、チームの作業を時々スピードアップします。 コードが他のプラットフォームにどれだけ移植されているかを知りたい場合は、.NET Portability Analyzerを使用できます。これは、Visual Studioの拡張機能として、および別のコンソールアプリケーションとして利用できます。



.NET Portability Analyzerは、.NET、.NET Core、UWP、Xamarin、およびMonoの開発者に関連しています。

次に、使用プロセスの事実と説明に注目します。



このアプリケーションは、2014年にCharles LowellというMicrosoftインターンによって作成されました。

現在、多くの開発者が接続しているオープンソースプロジェクトです。 プロジェクトリポジトリへのリンク: dotnet-apiport



コンソールアプリケーション



コンソールアプリケーションはここからダウンロードできます: リリース

最後のプレリリースは2015年11月24日でしたが、コンソールでコマンド(cmdまたはPowerShell)を入力することにより



ApiPort.exe listTargets
      
      





現在関連するプラットフォームのリストを取得します。 コンソールアプリケーションは、実際にはWebサービスにアクセスするラッパーです。 プラットフォームバージョンの横のアスタリスクは、このバージョンがデフォルトで使用されることを示します。 パラメータなしでアプリケーションを呼び出すときにヘルプが利用できます。 プロジェクトでディレクトリを分析する最も簡単なコマンドは次のとおりです。



 ApiPort.exe analyze -f ProjectFolder
      
      





この場合、ProjectFolderディレクトリはApiPort.exeと同じフォルダーに配置する必要があります

ディレクトリの代わりに、ファイルを指定できます。







デフォルトでは、分析は次のプラットフォームで実行されます。.NETCore App、.NET Framework、.NET Standard。 特定のプラットフォーム(またはコンマで区切られたプラットフォーム)を指定できます。



 ApiPort.exe analyze -f ProjectFolder -t ".NET Core, Version 1.1"
      
      





結果はxlsxファイルに保存されます。 Excel形式がデフォルトの形式です。 HTMLおよびJSONアップロードも利用できます。 それぞれ-r HTMLおよび-r JSONオプションを使用します。



または、unity.configという名前のファイルを作成し、ApiPortと同じフォルダーに配置することにより、オプションを指定できます。 レポート形式としてJSONを指定するファイルの内容は次のとおりです。



 <?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/> </configSections> <unity xmlns="http://schemas.microsoft.com/practices/2010/unity"> <typeAliases> <typeAlias alias="singleton" type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager, Microsoft.Practices.Unity" /> <typeAlias alias="IApiPortService" type="Microsoft.Fx.Portability.IApiPortService, Microsoft.Fx.Portability" /> <typeAlias alias="FileOutputApiPortService" type="ApiPort.FileOutputApiPortService, ApiPort" /> </typeAliases> <container> <register type="IApiPortService" mapTo="FileOutputApiPortService" > <lifetime type="singleton" /> </register> <instance name="DefaultOutputFormat" value="json" /> </container> </unity> </configuration>
      
      





unity.configファイルを作成してユーティリティを実行すると、レポートはすでにJSON形式で取得されます。



ユーティリティをオフラインで実行する場合は、 dotnet-apiportリポジトリをダウンロードまたはクローンする必要があります 。 次に、プロジェクトのルートディレクトリにあるbuild.cmdを使用してプロジェクトをビルドします(Visual Studioでビルドしても、オフライン作業用の現在のライブラリを使用したユーティリティは作成されません)。 ディレクトリbin \ release \ ApiPort.Offlineに (数分間続く)ビルド後、ファイルApiPort.exeを見つけることができます-これはオフライン作業用のバージョンになります。



レポートの分析として、Excel形式が最も直感的であると考えてみましょう。 ファイルの最初のページには、名前空間の互換性の概要がパーセントで表示されます。 ただし、バージョンにパーティションはありません。







Excelの2番目のタブに移動すると、さらに役立つ詳細が表示されます。 ここで、たとえば、.NET Coreでサポートされていないリストと推奨事項のリスト(この場合、特に有用ではありません-削除、これが推奨事項全体です)。







3番目のタブには、参照されているがアクセスできない場所のどこかにあるアセンブリがあります。 たとえば、GACで。



Visual Studio拡張機能



Visual Studioの拡張機能は、 .NET Portability Analyzerと呼ばれます。

最後に更新されたのは2016年5月5日です。 さらに、コンソールアプリケーションよりもはるかに使いやすくなっています。 プロジェクトのソースコードがある場合は、VSの拡張機能を使用することをお勧めします。



Visual Studioに拡張機能をインストールした後、目的のプラットフォーム(ターゲット)を構成する必要があります。 これを行うには、[ ツール ]-[ オプション ]メニューの[.NET Portability Analyzer]項目を選択します。







この拡張機能を使用するには2つの方法があります。



1. [ 分析 ]メニューから[ アセンブリの移植性の分析... ]を選択します。この場合、以前にコンパイルされたファイルを選択できます。



2.プロジェクトは直接分析されます。 VSで開いているプロジェクトのコンテキストメニューを右クリックし、[ 分析]項目を選択してから[ アセンブリの移植性を分析 ]を選択します。 ダブルクリックするだけで、非互換性が検出されたコード行に移動できます。







このスクリーンショットは、待機コードを修正する必要があるというメッセージを示しています。 Xamarinにはわずかな違いがあります。これについては、 非同期サポートの概要をご覧ください。



レポートは次のようになります。







いくつかのリンク:

»MSDNには、記事の翻訳があります: Cross-platform .NET Framework

»さらに、関連する古い英語のマニュアルがあります。.NETプラットフォーム全体で既存のコードを活用する



All Articles