Udostępnij za pośrednictwem


Analizator przenośności platformy .NET

Uwaga

Port interfejsu API został przestarzały na rzecz analizy binarnej za pomocą narzędzia Asystenta uaktualniania platformy .NET. Usługa zaplecza portu interfejsu API została zamknięta, więc aby użyć narzędzia, musisz użyć go w trybie offline. Aby uzyskać więcej informacji, zobacz PLIK README portu interfejsu API 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 zostały przenośne na określonych docelowych platformach .NET. Analizator przenośności jest oferowany jako rozszerzenie programu 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łowy projekt, obsługuje instalację równoległą i obsługuje scenariusze obejmujące wiele platform. Instalacja równoległa umożliwia wdrażanie 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 .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 rozwiązanie docelowe.
  • 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 .NET Core: zawiera interfejsy API platformy .NET Core oprócz pakietu zgodności systemu Windows, który udostępnia wiele dostępnych technologii programu .NET Framework. Jest to zalecany cel przenoszenia aplikacji z programu .NET Framework do platformy .NET Core w systemie Windows.
  • Rozszerzenia platformy i .NET Standard: zawiera interfejsy API .NET Standard oprócz pakietu zgodności systemu Windows, który udostępnia wiele dostępnych technologii programu .NET Framework. Jest to zalecany cel przenoszenia biblioteki z programu .NET Framework do platformy .NET Core w systemie Windows.

Jak używać analizatora przenośności platformy .NET

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

Ważne

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

Skonfiguruj ją w programie Visual Studio za pomocą ustawień analizatora>portability analyzer i wybierz platformy docelowe, które są platformami/wersjami platformy .NET, których chcesz ocenić luki w przenośności w porównaniu z platformą/wersją, z którą jest kompilowany bieżący zestaw.

Zrzut ekranu przedstawiający analizator przenośności.

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 w celu zrozumienia, który podzbiór zestawów zależy od tego, co. Ogólne zalecenie polega na zastosowaniu wyników analizy w podejściu dolnym, zaczynając 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]

W wyniku tego będzie wyglądać następująco po otwarciu w programie Visual Studio:

Zrzut ekranu przedstawiający analizę DGML.

Analizowanie przenośności

Aby przeanalizować cały projekt w programie 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 lub bibliotekę DLL projektu.

Zrzut ekranu przedstawiający analizator przenośności z Eksplorator rozwiązań.

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 zastosować 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 chcesz je przenosić, oraz wykluczanie plików, od których zależy aplikacja, ale nie masz własnego portu i nie możesz go przenosić. Zapewni to najbardziej odpowiedni raport o 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 programie 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 to plik programu Excel (.xlsx) w bieżącym katalogu.

Podsumowanie przenośności

Zrzut ekranu przedstawiający podsumowanie przenośności.

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 programu .NET Framework używanych w svcutil aplikacji jest dostępnych na platformie .NET Core + Rozszerzenia platformy. 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

Zrzut ekranu przedstawiający szczegóły przenośności.

Sekcja Szczegóły raportu zawiera listę brakujących interfejsów API z dowolnej z wybranych platform docelowych.

  • Typ docelowy: typ ma brak interfejsu API z platformy docelowej
  • Element członkowski elementu docelowego: 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ługiwane" 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 zachować aktualność. Przyglądamy się alternatywnym rozwiązaniom, które udostępniają klientom przydatne informacje.

Brakujące zestawy

Zrzut ekranu przedstawiający brakujące zestawy.

W raporcie może znajdować się 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 jest 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, od których aplikacja zależy od wersji obsługującej platformę docelową.

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