Freigeben über


.NET Portability Analyzer

Wichtig

API-Port wurde zugunsten der binären Analyse mit dem Tool .NET Upgrade Assistant veraltet. 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. Die Portabilitätsanalyse ist eine Konsolen-App, die Assemblys nach angegebenen Dateien oder Verzeichnissen analysiert.

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-: Verfügt über ein modulares Design, unterstützt parallele Installation und zielt auf plattformübergreifende Szenarien ab. Mit der parallelen Installation können Sie neue .NET-Versionen einführen, ohne andere Apps zu unterbrechen. Wenn Sie Ihre App auf .NET portieren und mehrere Plattformen unterstützen möchten, ist dies das empfohlene Ziel.
  • .NET Standard: Enthält die in allen .NET-Implementierungen verfügbaren .NET Standard-APIs.
  • ASP.NET Core: Ein modernes Webframework, das auf .NET basiert. Wenn Ihr Ziel darin besteht, Ihre Web-App zu .NET (Core) zu portieren, um mehrere Plattformen zu unterstützen, ist dies das empfohlene Ziel.
  • .NET + Plattformerweiterungen: Enthält zusätzlich zum Windows Compatibility Pack die .NET-APIs, die viele der windows-spezifischen .NET Framework-Technologien bereitstellt.
  • .NET Standard + Plattformerweiterungen: Enthält zusätzlich zum Windows Compatibility Pack die .NET Standard-APIs, die viele der windows-spezifischen .NET Framework-Technologien bereitstellt.

Verwenden von .NET Portability Analyzer

Um mit der Verwendung der .NET Portability Analyzer in Visual Studio zu beginnen, müssen Sie zuerst klonen und das dotnet-apiport-Projekterstellen. 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.

Lösungsweite Ansicht

Ein nützlicher Schritt bei der Analyse einer Lösung mit vielen Projekten besteht darin, die Abhängigkeiten zu visualisieren, um zu verstehen, welche Teilmenge von Assemblys davon 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.

Führen Sie zum Abrufen den folgenden Befehl aus:

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

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

Screenshot der DGML-Analyse

Analysieren der Portabilität

Geben Sie den folgenden Befehl ein, 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, dass Sie alle zugehörigen .exe und .dll Dateien, die Sie besitzen und portieren möchten, einschließen und die Dateien ausschließen, von denen Ihre App abhängt, die Sie aber nicht besitzen und 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. Ihr .NET-Portabilitätsbericht wird als Datei im angegebenen Format gespeichert. Die Standardeinstellung ist eine Excel-Datei ( .xlsx) im aktuellen Verzeichnis.

Zusammenfassung zur Portabilität

Screenshot der Zusammenfassung zur Portabilität.

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 der Portabilitätsdetails.

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 großen Anzahl von APIs ist es eine erhebliche Herausforderung, sie auf dem neuesten Stand zu halten.

Fehlende Assemblys

Screenshot der fehlenden Assemblys.

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.

Siehe auch

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