De .NET Portability Analyzer
Belangrijk
API-poort is afgeschaft ten gunste van binaire analyse met het hulpprogramma .NET Upgrade Assistant . De back-endservice van DE API-poort is afgesloten, dus als u het hulpprogramma wilt gebruiken, moet u deze offline gebruiken. Zie .NET API Port README voor meer informatie.
Wilt u ervoor zorgen dat uw bibliotheken ondersteuning bieden voor meerdere platforms? Wilt u zien hoeveel werk er nodig is om uw .NET Framework-toepassing uit te voeren op .NET Core? . NET Portability Analyzer is een hulpprogramma dat assembly's analyseert en een gedetailleerd rapport biedt over .NET-API's die ontbreken voor de toepassingen of bibliotheken die kunnen worden overdraagbaar op de opgegeven doelplatforms van .NET. Portability Analyzer is een console-app die assembly's analyseert op basis van opgegeven bestanden of map.
Zodra u uw project hebt geconverteerd naar het nieuwe platform, zoals .NET Core, kunt u de op Roslyn gebaseerde platformcompatibiliteitsanalyse gebruiken om API's te identificeren die uitzonderingen en andere compatibiliteitsproblemen genereren PlatformNotSupportedException .
Algemene doelen
- .NET-: heeft een modulair ontwerp, ondersteunt side-by-side-installatie en is gericht op platformoverschrijdende scenario's. Met side-by-side-installatie kunt u nieuwe .NET-versies gebruiken zonder dat andere apps worden onderbroken. Als u uw app wilt overzetten naar .NET en meerdere platforms wilt ondersteunen, is dit het aanbevolen doel.
- .NET Standard: bevat de .NET Standard-API's die beschikbaar zijn voor alle .NET-implementaties.
- ASP.NET Core: een modern webframework dat is gebouwd op .NET. Als u uw web-app wilt overzetten naar .NET (Core) ter ondersteuning van meerdere platforms, is dit het aanbevolen doel.
- .NET + Platformextensies: bevat de .NET-API's naast het Windows-compatibiliteitspakket, dat veel van de Windows-specifieke .NET Framework-technologieën biedt.
- .NET Standard + Platform Extensions: bevat de .NET Standard-API's naast het Windows-compatibiliteitspakket, dat veel van de Windows-specifieke .NET Framework-technologieën biedt.
.NET Portability Analyzer gebruiken
Als u .NET Portability Analyzer in Visual Studio wilt gaan gebruiken, moet u eerst het dotnet-apiport-project klonen en bouwen. Het werkt in versies van Visual Studio 2017 en Visual Studio 2019.
Belangrijk
De .NET Portability Analyzer wordt niet ondersteund in Visual Studio 2022.
Oplossingsbrede weergave
Een handige stap bij het analyseren van een oplossing met veel projecten is het visualiseren van de afhankelijkheden om te begrijpen welke subset van assembly's afhankelijk is van wat. De algemene aanbeveling is om de resultaten van de analyse toe te passen in een bottom-up benadering die begint met de leaf-knooppunten in een afhankelijkheidsgrafiek.
Voer de volgende opdracht uit om dit op te halen:
ApiPort.exe analyze -r DGML -f [directory or file]
Een resultaat hiervan ziet er als volgt uit wanneer deze wordt geopend in Visual Studio:
Draagbaarheid analyseren
Voer de volgende opdracht in om de huidige map te analyseren:
ApiPort.exe analyze -f .
Als u een specifieke lijst met .dll bestanden wilt analyseren, voert u de volgende opdracht in:
ApiPort.exe analyze -f first.dll -f second.dll -f third.dll
Als u een specifieke versie wilt gebruiken, gebruikt u de -t
parameter:
ApiPort.exe analyze -t ".NET, Version=5.0" -f .
Voer uit ApiPort.exe -?
om meer hulp te krijgen.
Het is raadzaam dat u alle gerelateerde .exe en .dll bestanden die u bezit en die u wilt overzetten, opnemen, en de bestanden uitsluiten waarop uw app afhankelijk is, maar die u niet bezit en die u niet kunt overzetten. Hiermee krijgt u het meest relevante rapport over portabiliteit.
Portabiliteitsresultaat weergeven en interpreteren
Alleen API's die niet worden ondersteund door een doelplatform, worden weergegeven in het rapport. Uw .NET Portability-rapport wordt opgeslagen als een bestand in de opgegeven indeling. De standaardwaarde bevindt zich in een Excel-bestand (.xlsx) in uw huidige map.
Overzicht van draagbaarheid
In de sectie Overdraagbaarheidsoverzicht van het rapport wordt het portabiliteitspercentage weergegeven voor elke assembly die in de uitvoering is opgenomen. In het vorige voorbeeld zijn 71,24% van de .NET Framework-API's die in de svcutil
app worden gebruikt, beschikbaar in .NET Core + Platform Extensions. Als u het hulpprogramma .NET Portability Analyzer uitvoert op meerdere assembly's, moet elke assembly een rij hebben in het rapport Overzicht van draagbaarheid.
DETAILS
In de sectie Details van het rapport worden de API's vermeld die ontbreken in een van de geselecteerde doelplatforms.
- Doeltype: het type heeft een ontbrekende API van een doelplatform.
- Doelcomponent: de methode ontbreekt in een doelplatform.
- Assemblynaam: de .NET Framework-assembly waarin de ontbrekende API zich bevindt.
- Elk van de geselecteerde doelplatforms is één kolom, zoals .NET Core: 'Niet ondersteund', betekent dat de API niet wordt ondersteund op dit doelplatform.
- Aanbevolen wijzigingen: de aanbevolen API of technologie die moet worden gewijzigd. Dit veld is momenteel leeg of verouderd voor veel API's. Vanwege het grote aantal API's is het een belangrijke uitdaging om deze up-to-date te houden.
Ontbrekende samenstellingen
In uw rapport vindt u mogelijk een sectie 'Ontbrekende assembly's'. Deze sectie bevat een lijst met assembly's waarnaar wordt verwezen door uw geanalyseerde assembly's en die niet zijn geanalyseerd. Als het een assembly is die u bezit, neemt u deze op in de uitvoering van de API portability analyzer, zodat u een gedetailleerd rapport over portabiliteit op API-niveau kunt krijgen. Als het een bibliotheek van derden is, controleert u of er een nieuwere versie is die ondersteuning biedt voor uw doelplatform en overweeg om over te stappen naar de nieuwere versie. Uiteindelijk moet de lijst alle assembly's van derden bevatten die afhankelijk zijn van die versie die uw doelplatform ondersteunt.
Zie ook
Ga naar de GitHub-documentatie voor meer informatie over .NET Portability Analyzer.