The .NET Portability Analyzer
Viktigt!
API-porten har blivit inaktuell till förmån för binär analys med verktyget .NET Upgrade Assistant . Serverdelstjänsten för API-porten har stängts av, så om du vill använda verktyget måste du använda den offline. Mer information finns i .NET API Port README.
Vill du göra så att dina bibliotek stöder flera plattformar? Vill du se hur mycket arbete som krävs för att få .NET Framework-programmet att köras på .NET Core? .NET Portability Analyzer är ett verktyg som analyserar sammansättningar och tillhandahåller en detaljerad rapport om .NET-API:er som saknas för att programmen eller biblioteken ska vara portabla på dina angivna .NET-plattformar. Portabilitetsanalys är en konsolapp som analyserar sammansättningar efter angivna filer eller kataloger.
När du har konverterat projektet till att rikta in dig på den nya plattformen, till exempel .NET Core, kan du använda den Roslyn-baserade analysatorn för plattformskompatibilitet för att identifiera API:er som utlöser PlatformNotSupportedException undantag och andra kompatibilitetsproblem.
Vanliga mål
- .NET: Har en modulär design, stöder installation sida vid sida och är inriktad på plattformsoberoende scenarier. Med en separat installation kan du använda nya .NET-versioner utan att bryta andra appar. Om målet är att porta din app till .NET och stödja flera plattformar är detta det rekommenderade målet.
- .NET Standard: Innehåller .NET Standard API:er som är tillgängliga för alla .NET-implementeringar.
- ASP.NET Core: Ett modernt webbramverk som bygger på .NET. Om målet är att porta webbappen till .NET (Core) för att stödja flera plattformar är detta det rekommenderade målet.
- .NET + Platform Extensions: Innehåller .NET API:er utöver Windows Compatibility Pack, som innehåller många av de Windows-specifika .NET Framework-teknikerna.
- .NET Standard + Platform Extensions: Innehåller .NET Standard API:er utöver Windows Compatibility Pack, som innehåller många av de Windows-specifika .NET Framework-teknikerna.
Så här använder du .NET Portability Analyzer
Om du vill börja använda .NET Portability Analyzer i Visual Studio måste du först klona och skapa dotnet-apiport-projektet. Det fungerar på Visual Studio 2017- och Visual Studio 2019-versioner.
Viktigt!
.NET Portability Analyzer stöds inte i Visual Studio 2022.
Lösningsomfattande vy
Ett användbart steg i att analysera en lösning med många projekt är att visualisera beroendena för att förstå vilka delmängder av sammansättningar som är beroende av vad. Den allmänna rekommendationen är att tillämpa resultatet av analysen i en bottom-up-metod som börjar med lövnoderna i ett beroendediagram.
Hämta detta genom att köra följande kommando:
ApiPort.exe analyze -r DGML -f [directory or file]
Ett resultat av detta skulle se ut så här när det öppnas i Visual Studio:
Analysera portabilitet
Ange följande kommando för att analysera den aktuella katalogen:
ApiPort.exe analyze -f .
Om du vill analysera en specifik lista över .dll filer anger du följande kommando:
ApiPort.exe analyze -f first.dll -f second.dll -f third.dll
Använd parametern för att rikta in dig på -t
en viss version:
ApiPort.exe analyze -t ".NET, Version=5.0" -f .
Kör ApiPort.exe -?
för att få mer hjälp.
Vi rekommenderar att du inkludera alla relaterade .exe och .dll filer som du äger och vill porta, och exkludera de filer som appen är beroende av men som du inte äger och inte kan porta. Detta ger dig den mest relevanta portabilitetsrapporten.
Visa och tolka portabilitetsresultat
Endast API:er som inte stöds av en målplattform visas i rapporten. .NET-portabilitetsrapporten sparas som en fil i det format som du har angett. Standardvärdet finns i en Excel-fil (.xlsx) i den aktuella katalogen.
Sammanfattning av portabilitet
Avsnittet Portabilitetssammanfattning i rapporten visar portabilitetsprocenten för varje sammansättning som ingår i körningen. I föregående exempel är 71,24 % av de .NET Framework-API:er som används i svcutil
appen tillgängliga i .NET Core + Platform Extensions. Om du kör verktyget .NET Portability Analyzer mot flera sammansättningar bör varje sammansättning ha en rad i rapporten Portabilitetssammanfattning.
Details
I avsnittet Information i rapporten visas de API:er som saknas i någon av de valda målplattformarna.
- Måltyp: typen saknar API från en målplattform.
- Målmedlem: metoden saknas i en målplattform.
- Sammansättningsnamn: den .NET Framework-sammansättning som det saknade API:et finns i.
- Var och en av de valda målplattformarna är en kolumn, till exempel värdet ".NET Core": "Stöds inte" innebär att API:et inte stöds på den här målplattformen.
- Rekommenderade ändringar: det rekommenderade API:et eller tekniken att ändra till. För närvarande är det här fältet tomt eller inaktuellt för många API:er. På grund av det stora antalet API:er är det en viktig utmaning att hålla det uppdaterat.
Sammansättningar saknas
Du kan hitta avsnittet Saknade sammansättningar i rapporten. Det här avsnittet innehåller en lista över sammansättningar som refereras av dina analyserade sammansättningar och som inte har analyserats. Om det är en sammansättning som du äger inkluderar du den i API-portabilitetsanalyskörningen så att du kan få en detaljerad portabilitetsrapport på API-nivå för den. Om det är ett bibliotek från tredje part kontrollerar du om det finns en nyare version som stöder målplattformen och överväg att flytta till den nyare versionen. Så småningom bör listan innehålla alla sammansättningar från tredje part som din app är beroende av som har en version som stöder din målplattform.
Se även
Mer information om .NET Portability Analyzer finns i GitHub-dokumentationen.