.NET Portability Analyzer

Hinweis

API Port ist veraltet und wurde durch die binäre Analyse des .NET-Upgrade-Assistenten ersetzt. Der Back-End-Dienst von API Port wurde heruntergefahren. Daher kann das Tool nur offline verwendet werden. Weitere Informationen finden Sie in der Infodatei zu .NET API Port.

Sollen Ihre Bibliotheken mehrere Plattformen unterstützen? Möchten Sie wissen, wie viel Arbeit erforderlich ist, damit Ihre .NET Framework-Anwendung unter .NET Core ausgeführt werden kann? .NET Portability Analyzer ist ein Tool, das Assemblys analysiert und einen detaillierten Bericht zu fehlenden .NET-APIs bereitstellt, damit die Anwendungen oder Bibliotheken auf die von Ihnen angegebenen .NET-Zielplattformen portiert werden können. Der Portability Analyzer wird zur projektweise zugeordneten Analyse einer Assemblys als Visual Studio-Erweiterung sowie zur Analyse von Assemblys nach angegebenen Dateien oder angegebenem Verzeichnis als ApiPort-Konsolenanwendung bereitgestellt.

Sobald Sie Ihr Projekt für Ihre neue Zielplattform (z. B. .NET Core) konvertiert haben, können Sie das Roslyn-basierte Analysetool für die Plattformkompatibilitätsanalyse verwenden, um APIs zu identifizieren, die PlatformNotSupportedException-Ausnahmen und einige andere Kompatibilitätsprobleme verursachen.

Allgemeine Ziele

  • .NET Core: Besitzt einen modularen Aufbau, unterstützt die parallele Ausführung und ist auf plattformübergreifende Szenarios ausgerichtet. Die parallele Installation ermöglicht Ihnen die Übernahme neuer Versionen von .NET Core, ohne andere Apps zu beeinträchtigen. Wenn Sie Ihre App zur Unterstützung mehrerer Plattformen nach .NET Core portieren möchten, wird dieses Ziel empfohlen.
  • .NET Standard: Enthält die in allen .NET-Implementierungen verfügbaren .NET Standard-APIs. Wenn Sie möchten, dass Ihre Bibliothek auf allen Plattformen ausgeführt werden kann, die .NET unterstützen, wird dieses Ziel empfohlen.
  • ASP.NET Core: Ein modernes Webframework, das auf .NET Core basiert. Wenn Sie Ihre Webanwendung zur Unterstützung von mehreren Plattformen nach .NET Core portieren möchten, wird dieses Ziel empfohlen.
  • .NET Core-Plattform + Plattformerweiterungen: Enthält die .NET Core-APIs sowie den Windows Compatibility Pack, der zahlreiche in .NET Framework verfügbare Technologien bereitstellt. Dieses Ziel wird zum Portieren der Anwendung von .NET Framework nach .NET Core unter Windows empfohlen.
  • .NET Standard-Plattform + Plattformerweiterungen: Enthält die .NET Standard-APIs sowie den Windows Compatibility Pack, der zahlreiche in .NET Framework verfügbare Technologien bereitstellt. Dieses Ziel wird zum Portieren der Bibliothek von .NET Framework nach .NET Core unter Windows empfohlen.

Verwenden von .NET Portability Analyzer

Laden Sie .NET Portability Analyzer in Visual Studio zunächst von Visual Studio Marketplace herunter, um mit der Verwendung dieser Erweiterung zu beginnen. Er wird in Visual Studio 2017 und Visual Studio 2019 unterstützt.

Wichtig

Der .NET Portability Analyzer wird in Visual Studio 2022 nicht unterstützt.

Sie können ihn in Visual Studio über Analyze>Portability Analyzer Settings (Analysieren/Portability Analyzer-Einstellungen) konfigurieren und Ihre Zielplattformen, also die .NET-Plattformen/Versionen auswählen, für die Sie Portabilitätslücken im Vergleich zu der Plattform/Version analysieren möchten, mit der Ihre aktuelle Assembly erstellt wurde.

Screenshot of portability analyzer.

Sie können auch die ApiPort-Konsolenanwendung verwenden. Laden Sie sie aus dem ApiPort-Repository herunter. Sie können die Befehlsoption listTargets verwenden, um die Liste mit verfügbaren Zielen anzuzeigen. Anschließend wählen Sie Zielplattformen aus, indem Sie die Befehlsoption -t oder --target angeben.

Projektmappenweite Ansicht

Ein nützlicher Schritt bei der Analyse einer Projektmappe mit vielen Projekten wäre das Visualisieren der Abhängigkeiten, um zu verstehen, welche Teilmenge von Assemblys wovon abhängig ist. Die allgemeine Empfehlung ist, für die Ergebnisse der Analyse einen Bottom-up-Ansatz zu verwenden, beginnend mit den Blattknoten eines Abhängigkeitsdiagramms.

Zum Abrufen können Sie den folgenden Befehl ausführen:

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

In Visual Studio sieht das Ergebnis in etwa wie folgt aus:

Screenshot of DGML analysis.

Analysieren der Portabilität

Um das gesamte Projekt in Visual Studio zu analysieren, klicken Sie mit der rechten Maustaste im Projektmappen-Explorer auf Ihr Projekt, und wählen Sie Assemblyportabilität analysieren aus. Wechseln Sie andernfalls zum Menü Analysieren, und wählen Sie Assemblyportabilität analysieren. Wählen Sie dort die ausführbare Datei oder DLL-Datei des Projekts aus.

Screenshot of Portability Analyzer from Solution Explorer.

Sie können auch die ApiPort-Konsolenanwendung verwenden.

Geben Sie den folgenden Befehl an, um das aktuelle Verzeichnis zu analysieren:

ApiPort.exe analyze -f .

Um eine bestimmte Liste von DLL-Dateien zu analysieren, geben Sie den folgenden Befehl ein:

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

Verwenden Sie den -t-Parameter, um eine bestimmte Version als Ziel zu nutzen:

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

Führen Sie ApiPort.exe -? aus, um weitere Unterstützung zu erhalten.

Es wird empfohlen, alle zugehörigen EXE- und DLL-Dateien, die Sie besitzen und die Sie portieren möchten, einzubeziehen, und die Dateien auszuschließen, von denen Ihre Anwendung abhängt, die Sie jedoch nicht besitzen möchten und die Sie nicht portieren können. Dadurch erhalten Sie einen entsprechend sachdienlichen Portabilitätsbericht.

Anzeigen und Interpretieren des Portabilitätsergebnisses

Im Bericht werden nur die APIs angegeben, die von einer Zielplattform nicht unterstützt werden. Nach dem Ausführen der Analyse in Visual Studio wird der Link für die Datei des .NET-Portabilitätsberichts angezeigt. Wenn Sie die ApiPort-Konsolenanwendung verwendet haben, wird der .NET Portabilitätsbericht als Datei im angegebenen Format gespeichert. Die Standardeinstellung ist eine Excel-Datei ( .xlsx) im aktuellen Verzeichnis.

Zusammenfassung zur Portabilität

Screenshot of the Portability Summary.

Im Berichtsabschnitt mit der Portabilitätszusammenfassung wird für jede in der Ausführung enthaltene Assembly der Portabilitätsprozentsatz angezeigt. Im vorherigen Beispiel sind 71,24 Prozent der in der App svcutil verwendeten .NET Framework-APIs in .NET Core und Plattformerweiterungen verfügbar. Wenn Sie das Tool .NET Portability Analyzer für mehrere Assemblys ausführen, gibt es im Bericht „Zusammenfassung zur Portabilität“ für jede Assembly eine Zeile.

Details

Screenshot of the Portability Details.

Im Abschnitt Details des Berichts werden die APIs aufgeführt, die in einer der Zielplattformen fehlen.

  • Zieltyp: Der Typ enthält APIs, die in einer Zielplattform fehlen.
  • Zielmember: Die Methode fehlt in einer Zielplattform.
  • Assemblyname: Die .NET Framework-Assembly, in der sich die fehlende API befindet.
  • Jede ausgewählte Zielplattform wird als eine Spalte dargestellt, z. B. „.NET Core“: Der Wert „Nicht unterstützt“ bedeutet, dass die API auf dieser Zielplattform nicht unterstützt wird.
  • Empfohlene Änderungen: Empfohlene API oder Technologie, zu der gewechselt werden sollte. Dieses Feld ist für viele APIs derzeit leer oder nicht mehr aktuell. Aufgrund der Vielzahl von APIs ist es eine große Herausforderung, auf dem Laufenden zu bleiben. Wir suchen nach alternativen Lösungen, um Kunden nützliche Informationen anbieten zu können.

Fehlende Assemblys

Screenshot of missing assemblies.

Ihr Bericht enthält möglicherweise einen Abschnitt mit der Überschrift „Fehlende Assemblys“. Dieser Abschnitt enthält eine Liste der Assemblys, die von Ihren analysierten Assemblys referenziert werden, aber nicht analysiert wurden. Wenn es sich um eine Assembly in Ihrem Besitz handelt, beziehen Sie sie in die Ausführung von API Portability Analyzer ein, sodass Sie dafür die im Portabilitätsbericht angegebene API-Ebene erhalten. Wenn es sich um eine Bibliothek eines Drittanbieters handelt, überprüfen Sie, ob es eine neuere Version gibt, die Ihre Zielplattform unterstützt, und erwägen Sie eine Umstellung auf die neuere Version. Letztlich soll diese Liste alle Assemblys von Drittanbietern enthalten, von denen Ihre Anwendung abhängig ist, und diese müssen nachweislich eine Version aufweisen, die Ihre Zielplattform unterstützt.

Weitere Informationen zum .NET Portability Analyzer finden Sie in der GitHub-Dokumentation.