在上一個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
兩種方式取得:
- 用git clone然後在checkout到
lab3/1-port-net-standard-finish
- 從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
- 在打開的視窗,能夠 設定:
- 分析結果的檔案格式
- 要對那個platform分析
- 設定好了之後,對
NorthwindDalNetStandard
點 右鍵 ->Analyze Project Portability
- 執行完了之後,會跳出一個視窗,可以點產生出來的excel
檢視結果
- 第一頁簽是結論,可以看出來 .Net Standard 1.6有部分不支援
- 格子有被標黃,並且數字不是100,表示只有 75.93 的api在.Net Standard 1.6是有支援
- 切換下面的頁簽到
Details
- 可以看到詳細的API,並且有問題的都是
DataSet
的部分 - 這個分析結果甚至能夠告訴你 .Net Standard 2.0就有支援了
透過.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
沒有留言 :
張貼留言