Sdílet prostřednictvím


Analyzátor přenositelnosti .NET

Poznámka:

Port rozhraní API je zastaralý ve prospěch binární analýzy pomocí nástroje Pomocník pro upgrade platformy .NET. Back-endová služba portu rozhraní API byla vypnuta, takže pokud chcete nástroj používat, musíte ho používat offline. Další informace najdete v tématu README portu rozhraní .NET API.

Chcete, aby vaše knihovny podporovaly více platforem? Chcete zjistit, kolik práce je potřeba k tomu, aby vaše aplikace .NET Framework běžela v .NET Core? Analyzátor přenositelnosti .NET je nástroj, který analyzuje sestavení a poskytuje podrobnou sestavu o rozhraních .NET API, která chybí pro aplikace nebo knihovny, které se mají přenášet na určených cílových platformách .NET. Analyzátor přenositelnosti se nabízí jako rozšíření sady Visual Studio, které analyzuje jedno sestavení na jeden projekt a jako konzolovou aplikaci ApiPort, která analyzuje sestavení podle zadaných souborů nebo adresáře.

Po převodu projektu na cíl na novou platformu, jako je .NET Core, můžete pomocí analyzátoru kompatibility platformy založeného na Roslyn identifikovat rozhraní API, která můžou PlatformNotSupportedException vyvolat výjimky a další problémy s kompatibilitou.

Běžné cíle

  • .NET Core: Má modulární návrh, podporuje souběžnou instalaci a cílí na scénáře pro různé platformy. Souběžná instalace umožňuje používat nové verze .NET Core, aniž byste museli rušit jiné aplikace. Pokud vaším cílem je přenést aplikaci do .NET Core a podporovat více platforem, jedná se o doporučený cíl.
  • .NET Standard: Zahrnuje rozhraní .NET Standard API dostupná ve všech implementacích .NET. Pokud vaším cílem je, aby knihovna běžela na všech podporovaných platformách .NET, doporučuje se tento cíl.
  • ASP.NET Core: Moderní webová architektura založená na .NET Core. Pokud vaším cílem je přenést webovou aplikaci do .NET Core pro podporu více platforem, je to doporučený cíl.
  • Rozšíření platformy .NET Core + Platform: Zahrnuje rozhraní .NET Core API kromě sady Windows Compatibility Pack, která poskytuje mnoho dostupných technologií rozhraní .NET Framework. Toto je doporučený cíl pro přenos aplikace z rozhraní .NET Framework do .NET Core ve Windows.
  • Rozšíření platformy .NET Standard + Platform: Zahrnuje rozhraní API .NET Standard kromě sady Windows Compatibility Pack, která poskytuje mnoho dostupných technologií rozhraní .NET Framework. Toto je doporučený cíl pro přenos knihovny z rozhraní .NET Framework do .NET Core ve Windows.

Jak používat analyzátor přenositelnosti .NET

Pokud chcete začít používat analyzátor přenositelnosti .NET v sadě Visual Studio, musíte nejprve stáhnout a nainstalovat rozšíření z webu Visual Studio Marketplace. Funguje ve verzích sady Visual Studio 2017 a Visual Studio 2019.

Důležité

Analyzátor přenositelnosti .NET není v sadě Visual Studio 2022 podporován.

Nakonfigurujte ho v sadě Visual Studio prostřednictvím nastavení Analyzátoru>přenositelnosti a vyberte cílové platformy, což jsou platformy a verze .NET, se kterými chcete vyhodnotit mezery přenositelnosti v porovnání s platformou nebo verzí, se kterou je vaše aktuální sestavení sestaveno.

Snímek obrazovky s analyzátorem přenositelnosti

Můžete také použít konzolovou aplikaci ApiPort a stáhnout ji z úložiště ApiPort. Pomocí možnosti příkazu můžete listTargets zobrazit dostupný cílový seznam a pak vybrat cílové platformy zadáním -t nebo --target možností příkazu.

Široké zobrazení řešení

Užitečným krokem při analýze řešení s mnoha projekty by bylo vizualizovat závislosti, abyste pochopili, která podmnožina sestavení závisí na tom, co. Obecné doporučení je použít výsledky analýzy v přístupu zdola nahoru počínaje uzly typu list v grafu závislostí.

Pokud chcete tento příkaz načíst, můžete spustit následující příkaz:

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

Výsledek by při otevření v sadě Visual Studio vypadal takto:

Snímek obrazovky s analýzou DGML

Analýza přenositelnosti

Pokud chcete analyzovat celý projekt v sadě Visual Studio, klikněte pravým tlačítkem myši na projekt v Průzkumník řešení a vyberte Možnost Analyzovat přenositelnost sestavení. V opačném případě přejděte do nabídky Analyzovat a vyberte Analyzovat přenositelnost sestavení. Odtud vyberte spustitelný soubor nebo knihovnu DLL projektu.

Snímek obrazovky analyzátoru přenositelnosti z Průzkumník řešení

Můžete také použít konzolovou aplikaci ApiPort.

Zadáním následujícího příkazu analyzujte aktuální adresář:

ApiPort.exe analyze -f .

Pokud chcete analyzovat konkrétní seznam .dll souborů, zadejte následující příkaz:

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

Pokud chcete cílit na konkrétní verzi, použijte -t parametr:

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

Spusťte a získejte ApiPort.exe -? další nápovědu.

Doporučuje se zahrnout všechny související exe a dll soubory, které vlastníte a chcete portovat, a vyloučit soubory, na které vaše aplikace závisí, ale vlastníte a nemůžete portovat. Tím získáte nejrelevavantnější sestavu přenositelnosti.

Zobrazení a interpretace výsledku přenositelnosti

V sestavě se zobrazí pouze rozhraní API, která nejsou podporována cílovou platformou. Po spuštění analýzy v sadě Visual Studio se zobrazí odkaz na váš soubor sestavy .NET Přenositelnost. Pokud jste použili konzolovou aplikaci ApiPort, vaše sestava přenositelnosti .NET se uloží jako soubor ve formátu, který jste zadali. Výchozí hodnota je v excelovém souboru (.xlsx) v aktuálním adresáři.

Souhrn přenositelnosti

Snímek obrazovky se souhrnem přenositelnosti

Část Souhrn přenositelnosti sestavy zobrazuje procento přenositelnosti pro každé sestavení zahrnuté v běhu. V předchozím příkladu je v .NET Core + Platform Extensions k dispozici 71,24 % rozhraní API rozhraní .NET Framework použitých v svcutil aplikaci. Pokud spustíte nástroj .NET Portability Analyzer pro více sestavení, každé sestavení by mělo mít řádek v sestavě Souhrn přenositelnosti.

Detaily

Snímek obrazovky s podrobnostmi přenositelnosti

V části Podrobnosti sestavy jsou uvedena chybějící rozhraní API z některé z vybraných cílových platforem.

  • Typ cíle: Typ chybějícího rozhraní API z cílové platformy
  • Cílový člen: V cílové platformě chybí metoda.
  • Název sestavení: sestavení rozhraní .NET Framework, ve které chybí rozhraní API.
  • Každá z vybraných cílových platforem je jeden sloupec, například .NET Core: Hodnota Nepodporovaná hodnota znamená, že rozhraní API není na této cílové platformě podporované.
  • Doporučené změny: doporučené rozhraní API nebo technologie, na které se mají změnit. V současné době je toto pole prázdné nebo zastaralé pro mnoho rozhraní API. Vzhledem k velkému počtu rozhraní API máme velký problém udržet si ho aktuální. Hledáme alternativní řešení, abychom zákazníkům poskytli užitečné informace.

Chybějící sestavení

Snímek obrazovky s chybějícími sestaveními

V sestavě můžete najít oddíl Chybějící sestavení. Tato část obsahuje seznam sestavení, na která odkazují analyzovaná sestavení a nebyla analyzována. Pokud je sestavení, které vlastníte, zahrňte ho do spuštění analyzátoru přenositelnosti rozhraní API, abyste získali podrobnou sestavu přenositelnosti na úrovni rozhraní API. Pokud se jedná o knihovnu třetí strany, zkontrolujte, jestli existuje novější verze, která podporuje vaši cílovou platformu, a zvažte přechod na novější verzi. Seznam by nakonec měl obsahovat všechna sestavení třetích stran, která vaše aplikace závisí na verzi podporující vaši cílovou platformu.

Další informace o analyzátoru přenositelnosti .NET najdete v dokumentaci k GitHubu.