Analizator przenośności platformy .NET

Chcesz, aby biblioteki obsługiwały wiele platform? Chcesz sprawdzić, ile pracy jest wymagane, aby aplikacja .NET Framework działała na platformie .NET Core? Analizator przenośności platformy .NET to narzędzie, które analizuje zestawy i udostępnia szczegółowy raport na temat interfejsów API platformy .NET, których brakuje, aby aplikacje lub biblioteki były przenośne na określonych docelowych platformach .NET. Analizator przenośności jest oferowany jako rozszerzenie Visual Studio, które analizuje jeden zestaw na projekt i jako aplikację konsolową ApiPort, która analizuje zestawy według określonych plików lub katalogu.

Po przekonwertowaniu projektu na nową platformę, na przykład .NET Core, możesz użyć analizatora zgodności platformy opartej na platformie Roslyn , aby zidentyfikować interfejsy API, które zgłaszają PlatformNotSupportedException wyjątki i inne problemy ze zgodnością.

Typowe cele

  • .NET Core: ma modułową konstrukcję, obsługuje instalację równoległą i obsługuje scenariusze międzyplatformowe. Instalacja równoległa umożliwia wdrożenie nowych wersji platformy .NET Core bez przerywania działania innych aplikacji. Jeśli Twoim celem jest przenoszenie aplikacji do platformy .NET Core i obsługa wielu platform, jest to zalecany cel.
  • . NET Standard: obejmuje interfejsy API platformy .NET Standard dostępne we wszystkich implementacjach platformy .NET. Jeśli twoim celem jest uruchomienie biblioteki na wszystkich obsługiwanych platformach .NET, jest to zalecane.
  • ASP.NET Core: nowoczesna platforma internetowa oparta na platformie .NET Core. Jeśli Twoim celem jest przenoszenie aplikacji internetowej do platformy .NET Core w celu obsługi wielu platform, jest to zalecany cel.
  • Rozszerzenia platformy i platformy .NET Core: zawiera interfejsy API platformy .NET Core oprócz pakietu zgodności Windows, który udostępnia wiele z dostępnych technologii .NET Framework. Jest to zalecany obiekt docelowy do przenoszenia aplikacji z .NET Framework do platformy .NET Core w Windows.
  • Rozszerzenia platformy i .NET Standard: zawiera interfejsy API platformy .NET Standard oprócz pakietu zgodności Windows, który udostępnia wiele .NET Framework dostępnych technologii. Jest to zalecany obiekt docelowy do przenoszenia biblioteki z .NET Framework do platformy .NET Core w Windows.

Jak używać analizatora portability platformy .NET

Aby rozpocząć korzystanie z analizatora portability platformy .NET w Visual Studio, należy najpierw pobrać i zainstalować rozszerzenie z witryny Visual Studio Marketplace. Działa ona w wersjach Visual Studio 2017 i Visual Studio 2019.

Ważne

Analizator przenośności platformy .NET nie jest obsługiwany w Visual Studio 2022 roku.

Skonfiguruj ją w Visual Studio za pomocą narzędzia AnalyzePortability>Analyzer Ustawienia i wybierz platformy docelowe, które są platformami/wersjami platformy .NET, z którymi chcesz ocenić luki dotyczące przenośności w porównaniu z platformą/wersją, z którą jest kompilowany bieżący zestaw.

Screenshot of portability analyzer.

Możesz również użyć aplikacji konsolowej ApiPort, pobrać ją z repozytorium ApiPort. Możesz użyć listTargets opcji polecenia, aby wyświetlić dostępną listę docelową, a następnie wybrać platformy docelowe, określając -t lub --target opcję polecenia.

Widok szerokiego rozwiązania

Przydatnym krokiem w analizowaniu rozwiązania z wieloma projektami jest wizualizowanie zależności, aby zrozumieć, który podzbiór zestawów zależy od tego, co. Ogólne zalecenie polega na zastosowaniu wyników analizy w podejściu dolnym, począwszy od węzłów liścia na wykresie zależności.

Aby to pobrać, możesz uruchomić następujące polecenie:

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

Wynik będzie wyglądać następująco po otwarciu w Visual Studio:

Screenshot of DGML analysis.

Analizowanie przenośności

Aby przeanalizować cały projekt w Visual Studio, kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań i wybierz pozycję Analizuj przenośność zestawu. W przeciwnym razie przejdź do menu Analizuj i wybierz pozycję Analizuj przenośność zestawu. W tym miejscu wybierz plik wykonywalny projektu lub bibliotekę DLL.

Screenshot of Portability Analyzer from Solution Explorer.

Możesz również użyć aplikacji konsolowej ApiPort.

Wpisz następujące polecenie, aby przeanalizować bieżący katalog:

ApiPort.exe analyze -f .

Aby przeanalizować określoną listę plików .dll, wpisz następujące polecenie:

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

Aby kierować określoną wersję, użyj parametru -t :

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

Uruchom polecenie ApiPort.exe -? , aby uzyskać więcej pomocy.

Zaleca się dołączenie wszystkich powiązanych plików exe i dll, które są własnością użytkownika i ma być portem, oraz wykluczanie plików, od których zależy aplikacja, ale nie jesteś właścicielem i nie możesz użyć portu. Zapewni to najbardziej odpowiedni raport dotyczący przenośności.

Wyświetlanie i interpretowanie wyniku przenośności

W raporcie są wyświetlane tylko interfejsy API, które nie są obsługiwane przez platformę docelową. Po uruchomieniu analizy w Visual Studio zostanie wyświetlony link do pliku raportu portability platformy .NET. Jeśli użyto aplikacji konsolowej ApiPort, raport przenośności platformy .NET zostanie zapisany jako plik w określonym formacie. Wartość domyślna znajduje się w pliku Excel (.xlsx) w bieżącym katalogu.

Podsumowanie przenośności

Screenshot of the Portability Summary.

Sekcja Podsumowanie przenośności raportu przedstawia procent przenośności dla każdego zestawu uwzględnionego w przebiegu. W poprzednim przykładzie 71,24% interfejsów API .NET Framework używanych w aplikacji jest dostępnych w svcutil rozszerzeniach platformy i platformy .NET Core. Jeśli uruchomisz narzędzie .NET Portability Analyzer dla wielu zestawów, każdy zestaw powinien mieć wiersz w raporcie Podsumowanie przenośności.

Szczegóły

Screenshot of the Portability Details.

W sekcji Szczegóły raportu wymieniono brakujące interfejsy API z dowolnej z wybranych platform docelowych.

  • Typ docelowy: typ ma brak interfejsu API z platformy docelowej
  • Element docelowy: brak metody na platformie docelowej
  • Nazwa zestawu: zestaw .NET Framework, w ramach którego znajduje się brakujący interfejs API.
  • Każda z wybranych platform docelowych jest jedną kolumną, taką jak ".NET Core": "Nieobsługiwana" wartość oznacza, że interfejs API nie jest obsługiwany na tej platformie docelowej.
  • Zalecane zmiany: zalecany interfejs API lub technologia do zmiany. Obecnie to pole jest puste lub nieaktualne dla wielu interfejsów API. Ze względu na dużą liczbę interfejsów API mamy znaczące wyzwanie, aby zapewnić aktualność. Przyglądamy się alternatywnym rozwiązaniom, aby zapewnić klientom przydatne informacje.

Brakujące zestawy

Screenshot of missing assemblies.

W raporcie może zostać wyświetlona sekcja Brak zestawów. Ta sekcja zawiera listę zestawów, do których odwołuje się analizowane zestawy i nie zostały przeanalizowane. Jeśli jest to zestaw, którego jesteś właścicielem, dołącz go do uruchomienia analizatora przenośności interfejsu API, aby uzyskać szczegółowy raport przenośności na poziomie interfejsu API. Jeśli jest to biblioteka innej firmy, sprawdź, czy istnieje nowsza wersja, która obsługuje platformę docelową, i rozważ przejście do nowszej wersji. W końcu lista powinna zawierać wszystkie zestawy innych firm, które aplikacja zależy od wersji obsługującej platformę docelową.

Aby uzyskać więcej informacji na temat analizatora portability platformy .NET, odwiedź dokumentację GitHub.