Alan Tsai 的學習筆記


學而不思則罔,思而不學則殆,不思不學則“網貸” 記錄軟體開發的點點滴滴 著重於微軟技術、網頁開發、DevOps:C#, Asp .net Mvc、Azure、Docker、Data Science

[.Net Core 與 .Net Standard 實戰教學][Lab][03-2]使用.NET API Portability分析API支援程度

image
圖片來源:https://pixabay.com/en/workshop-rustic-hammer-wrench-tool-2608390/

在上一個lab:[03-1]現有.Net Framework Lib 改成 .Net Standard 了解了如何把一個現行的.Net Framework邏輯移轉到Target .Net Standard以達到最大跨平台共用邏輯的需求。在操作的過程中有特意轉成.Net Standard 1.6來模擬不支援的api DataSet, 並且了解如何使用 Api Browser來查看api支援度。

不過,難道沒有工具能夠分析現行程式碼是否支援那些target嗎?

在這一個lab將會使用.NET API Portability來達到分析支援度的情況。

上個lab的最後成果的程式碼可以再github看到:https://github.com/alantsai-samples/2017-10-14-net-core-workshop

git標籤:lab3/1-port-net-standard-finish

兩種方式取得:

  1. 用git clone然後在checkout到lab3/1-port-net-standard-finish
  2. 從github release下載:下載鏈接

操作步奏

  • 安裝.NET API Portability
  • 設定和對專案進行分析
  • 檢視結果

安裝.NET API Portability

下載並且安裝套件 .NET API Portability

可以再這個鏈接下載到: https://marketplace.visualstudio.com/items?itemName=ConnieYau.NETPortabilityAnalyzer

目前支援:

  • Visual Studio 2015
  • Visual Studio 2017

先把所有Visual Studio關掉。

然後對下載下來的vsix點兩下。

安裝和一般VS套件一樣,就是下一步到底。

設定和對專案進行分析

NorthwindDalNetStandard專案 點 右鍵 -> 選擇 Portability Analyzer Settings
image
在打開的視窗,能夠 設定:
  1. 分析結果的檔案格式
  2. 要對那個platform分析
image
設定好了之後,對 NorthwindDalNetStandard右鍵 -> Analyze Project Portability
image
執行完了之後,會跳出一個視窗,可以點產生出來的excel
image

檢視結果

第一頁簽是結論,可以看出來 .Net Standard 1.6有部分不支援
格子有被標黃,並且數字不是100,表示只有 75.93 的api在.Net Standard 1.6是有支援
image
切換下面的頁簽到Details
可以看到詳細的API,並且有問題的都是DataSet的部分 - 這個分析結果甚至能夠告訴你 .Net Standard 2.0就有支援了
image

透過.NET API Portability 工具能夠分析的出一個粗略轉到.Net Standard會需要花的工,因此可以用來做一個事前的工作量評估工具。

不過還是要注意,這個只是一個參考值,有些問題可能會是runtime才遇到,那這個工具就無能為力。

相關資源

官方github repo
https://github.com/microsoft/dotnet-apiport
Visual Studio Marketplace 下載
https://marketplace.visualstudio.com/items?itemName=ConnieYau.NETPortabilityAnalyzer
官方文件介紹
https://docs.microsoft.com/zh-tw/dotnet/standard/portability-analyzer
comments powered by Disqus