Analyzátor přenositelnosti .NET

Poznámka

Pracujeme v procesu vyřazení portu rozhraní API ve prospěch integrace binární analýzy přímo do pomocníka pro upgrade .NET. V nadcházejících měsících vypneme back-endovou službu portu rozhraní API, která bude vyžadovat použití nástroje offline. Další informace najdete v tématu GitHub: Úložiště portů 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 rozhraní .NET API, která chybí pro aplikace nebo knihovny, které mají být přenosné na vašich 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.

Jakmile projekt převedete na cílovou novou platformu, jako je .NET Core, můžete pomocí analyzátoru kompatibility platformy založeného na Roslyn identifikovat rozhraní API, která vyvolává PlatformNotSupportedException výjimky a další problémy s kompatibilitou.

Společ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 přijmout nové verze .NET Core bez přerušení jiných aplikací. Pokud vaším cílem je přenést aplikaci do .NET Core a podporovat více platforem, doporučujeme tento cíl.
  • .NET Standard: Zahrnuje rozhraní .NET Standard API dostupná ve všech implementacích .NET. Pokud chcete, aby knihovna běžela na všech podporovaných platformách .NET, doporučujeme 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, jedná se o doporučený cíl.
  • .NET Core + Rozšíření platformy: Zahrnuje rozhraní .NET Core API kromě sady Windows Compatibility Pack, která poskytuje řadu 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 řadu 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.

Použití analyzátoru přenositelnosti rozhraní .NET

Pokud chcete začít používat analyzátor přenositelnosti .NET v sadě Visual Studio, musíte nejdřív stáhnout a nainstalovat rozšíření z Webu Visual Studio Marketplace. Funguje na 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 pomocí nastavení Analyzátoru>přenositelnosti a vyberte cílové platformy, což jsou platformy nebo 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, 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ým doporučením je použít výsledky analýzy v přístupu dole nahoru počínaje uzly typu list v grafu závislostí.

K načtení tohoto příkazu 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 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 projektu 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 souborů .dll, 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 parametr -t :

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

Spusťte, ApiPort.exe -? abyste získali další pomoc.

Doporučujeme 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 soubor sestavy přenositelnosti .NET. 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é do spuštění. V předchozím příkladu je 71,24 % rozhraní API rozhraní .NET Framework, která se v svcutil aplikaci používají, k dispozici v rozšířeních .NET Core + Platform. Pokud spustíte nástroj .NET Portability Analyzer pro více sestavení, každé sestavení by mělo mít v sestavě Souhrn přenositelnosti řádek.

Podrobnosti

Snímek obrazovky s podrobnostmi o 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ě podporováno.
  • Doporučené změny: doporučené rozhraní API nebo technologie, na které se má 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, abychom ho měli 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 část Chybějící sestavení. Tato část obsahuje seznam sestavení odkazovaných na 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 pro něj mohli získat podrobnou sestavu přenositelnosti na úrovni rozhraní API. Pokud se jedná o knihovnu třetí strany, zkontrolujte, jestli existuje novější verze, která podporuje cílovou platformu, a zvažte přechod na novější verzi. Nakonec by měl seznam obsahovat všechna sestavení třetích stran, která vaše aplikace závisí na verzi podporující cílovou platformu.

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