.NET 可攜性分析器

注意

API 連接埠已被取代,以支持透過 .NET 升級小幫手進行二進位分析。 API 連接埠的後端服務已關閉,因此若要使用此工具,您必須離線使用。 如需詳細資訊,請參閱 .NET API 連接埠讀我檔案

要讓您的程式庫支援多平台? 想要查看讓您的 .NET Framework 應用程式在 .NET Core 上執行所需的工作量? .NET 可攜性分析器是可分析組件,並針對將應用程式或程式庫移植到指定目標 .NET 平台上所需的遺失 .NET API 提供詳細報告的工具。 Portability Analyzer 會作為 Visual Studio 延伸模組提供,可分析每個專案的一個組件,並可作為 ApiPort 主控台應用程式,按指定的檔案或目錄去分析組件。

將專案轉換成以新的平台為目標之後,例如 .NET Core,您便可以使用 Roslyn 型平台相容性分析器來識別擲回 PlatformNotSupportedException 例外狀況和其他相容性問題的 API。

常見目標

  • .NET Core︰具有模組化的設計,支援並行安裝,且適合在跨平台的情況下使用。 並行安裝可讓您採用新的 .NET Core 版本,而不會中斷其他應用程式。 如果您的目標,是要將應用程式移植到 .NET Core 並支援多平台,這是建議的目標。
  • .NET Standard:包含在所有 .NET 實作上提供的 .NET Standard API。 如果您的目標是讓程式庫在所有支援 .NET 的平台上執行,這是建議的目標。
  • ASP.NET Core:建置於 .NET Core 的新式 Web 架構。 如果您的目標,是要將 Web 應用程式移植到 .NET Core 來支援多平台,這是建議的目標。
  • .NET Core + 平台延伸模組:包含 .NET Core API 以及 Windows 相容性套件,可提供許多 .NET Framework 的可用技術。 如需將您的應用程式從 .NET Framework 移植到 Windows 上的 .NET Core,這是建議的目標。
  • .NET Standard + 平台延伸模組:包含 .NET Standard API 以及 Windows 相容性套件,可提供許多 .NET Framework 的可用技術。 如需將您的程式庫從 .NET Framework 移植到 Windows 上的 .NET Core,這是建議的目標。

如何使用 .NET 可攜性分析器

若要開始在 Visual Studio 中使用 .NET 可攜性分析器,您必須從 Visual Studio Marketplace 下載及安裝此延伸模組。 其適用於 Visual Studio 2017 和 Visual Studio 2019 版本。

重要

Visual Studio 2022 不支援 .NET 可攜性分析器。

透過 [分析]>[Portability Analyzer 設定] 並選取目標平台 (這是您要評估可攜性間距的 .NET 平台/版本,與建置您目前組件的平台/版本比較),在 Visual Studio 中對其進行設定。

Screenshot of portability analyzer.

您也可以使用 ApiPort 主控台應用程式,可從 ApiPort 存放庫下載。 您可以使用 listTargets 命令選項來顯示可用的目標清單,然後指定 -t--target 命令選項來挑選目標平台。

解決方案整體檢視

分析具有許多專案之解決方案的實用步驟,就是將相依性視覺化,以了解哪些組件子集相依於哪些項目。 一般建議是在從相依性圖表中的分葉節點開始,套用由下至上分析的結果。

若要擷取此項目,您可以執行下列命令:

ApiPort.exe analyze -r DGML -f [directory or file]

在 Visual Studio 中開啟時,此結果看起來如下:

Screenshot of DGML analysis.

分析可攜性

若要在 Visual Studio 中分析整個專案,在 [方案總管] 中以滑鼠右鍵按一下您的專案,然後選取 [分析組件可攜性]。 否則,請移至 [分析] 功能表,然後選取 [Analyze Assembly Portability] (分析組件可攜性)。 從這裡選取專案的可執行檔或 DLL。

Screenshot of Portability Analyzer from Solution Explorer.

您也可以使用 ApiPort 主控台應用程式

輸入下列命令分析目前的目錄:

ApiPort.exe analyze -f .

若要分析特定的 .dll 檔案清單,請輸入下列命令:

ApiPort.exe analyze -f first.dll -f second.dll -f third.dll

若要以特定版本為目標,請使用 -t 參數:

ApiPort.exe analyze -t ".NET, Version=5.0" -f .

執行 ApiPort.exe -? 以取得詳細說明。

建議您納入所有您擁有並想要移植的相關 exe 與 dll 檔案,並排除應用程式所依賴,但您未擁有也無法移植的檔案。 這會提供您最相關的可攜性報告。

檢視並解譯可攜性結果

只有目標平台不支援的 API 會顯示在報表中。 在 Visual Studio 執行分析之後,您會看到 .NET 可攜性報表檔案連結。 如果您使用 ApiPort 主控台應用程式,您的 .NET 可攜性報表會儲存為您指定格式的檔案。 預設會在您目前的目錄中儲存為 Excel 檔案 (.xlsx)。

可攜性摘要

Screenshot of the Portability Summary.

此報表顯示的可攜性摘要區段,會顯示該次執行中每個組件的可攜性百分比。 在上述範例中,71.24% 用於 svcutil 應用程式中的 .NET Framework API 可在 .NET Core + 平台延伸模組中取得。 如果您對多個組件執行 .NET 可攜性分析工具,每個組件都應該在可攜性摘要報告中具有一個資料列。

詳細資料

Screenshot of the Portability Details.

報告的 [詳細資料] 區段,其中會列出任何所選 [目標平台] 遺漏的 API。

  • 目標類型:類型缺少目標平台的 API
  • 目標成員:目標平台缺少方法
  • 組件名稱:缺少之 API 所在的 .NET Framework 組件。
  • 每個選取的目標平台都是一個資料行,例如「.NET Core」:「不支援」值,表示此目標平台不支援 API。
  • 建議的變更:建議要變更的 API 或技術。 目前,許多 API 的此欄位為空白或過期。 因為 API 太多,導致我們難以使其保持最新狀態。 我們將尋找替代解決方案,來為客戶提供有用的資訊。

缺少的組件

Screenshot of missing assemblies.

您可在報表中找到缺少的組件區段。 此區段包含的組件清單由已分析的組件所參考,但未進行分析。 如果是您自己擁有的組件,請將其納入 API 可攜性分析器中執行,以便您可為其取得 API 層級的詳細可攜性報告。 如果是協力廠商程式庫,請檢查是否有支援目標平台的較新版本,並考慮移至較新版本。 最後,這份清單應包含您應用程式所依賴的所有第三方組件,以及具有支援您目標平台的版本。

如需 .NET 可攜性分析器 的詳細資訊,請瀏覽 GitHub 文件 (英文)。