Přehled přenosu z rozhraní .NET Framework do .NET

Tento článek obsahuje přehled toho, co byste měli zvážit při přenosu kódu z rozhraní .NET Framework do .NET (dříve s názvem .NET Core). Přenos na .NET z rozhraní .NET Framework pro mnoho projektů je poměrně jednoduchý. Složitost projektů určuje, kolik práce budete dělat po počáteční migraci souborů projektu.

Projekty, ve kterých je model aplikace dostupný v .NET (například v knihovnách, konzolových aplikacích a desktopových aplikacích), obvykle vyžadují malou změnu. Projekty, které vyžadují nový model aplikace, například přechod na ASP.NET Core z ASP.NET, vyžadují více práce. Mnoho vzorů ze starého modelu aplikace má ekvivalenty, které lze použít během převodu.

Windows desktopové technologie

Řada aplikací vytvořených pro .NET Framework používá desktopovou technologii, jako je například model Windows Forms nebo Windows Presentation Foundation (WPF). Oba model Windows Forms i WPF byly portovány do .NET, ale zůstávají Windows technologiemi.

Před migrací aplikace model Windows Forms nebo WPF zvažte následující závislosti:

  1. Project soubory pro .NET používají jiný formát než rozhraní .NET Framework.
  2. Váš projekt může používat rozhraní API, které není dostupné v .NET.
  3. Ovládací prvky a knihovny třetích stran nemusí být portovány do .NET a zůstávají dostupné jenom pro rozhraní .NET Framework.
  4. Váš projekt používá technologii, která už není dostupná v .NET.

.NET používá opensourcové verze model Windows Forms a WPF a zahrnuje vylepšení rozhraní .NET Framework.

Kurzy k migraci desktopové aplikace na .NET 6 najdete v jednom z následujících článků:

rozhraní API specifická pro Windows

Aplikace stále můžou vyvolat nativní knihovny na platformách podporovaných rozhraním .NET. Tato technologie se neomezuje na Windows. Pokud je ale knihovna, na kterou odkazujete, Windows specifická, například user32.dll nebo kernel32.dll, kód funguje jenom na Windows. Pro každou platformu, na které má vaše aplikace běžet, budete muset najít verze specifické pro platformu nebo nastavit, aby váš kód byl dostatečně obecný, aby běžel na všech platformách.

Při přenosu aplikace z rozhraní .NET Framework do .NET vaše aplikace pravděpodobně používala knihovnu, která je distribuovaná v rozhraní .NET Framework. Řada rozhraní API, která byla k dispozici v rozhraní .NET Framework, nebyla portována do rozhraní .NET, protože závisela na technologii specifické pro Windows, jako je registr Windows nebo model výkresu GDI+.

Sada Windows Compatibility Pack poskytuje velkou část povrchu rozhraní .NET Framework API pro .NET a poskytuje se prostřednictvím microsoft.Windows. Balíček NuGet kompatibility.

Další informace naleznete v tématu Použití sady Windows Compatibility Pack k přenosu kódu do .NET.

Režim kompatibility rozhraní .NET Framework

Režim kompatibility rozhraní .NET Framework byl zaveden v rozhraní .NET Standard 2.0. Tento režim kompatibility umožňuje projektům .NET Standard a .NET 5+ (a .NET Core 3.1) odkazovat na knihovny rozhraní .NET Framework pouze v Windows. Odkazování na knihovny rozhraní .NET Framework nefunguje pro všechny projekty, například pokud knihovna používá rozhraní API pro Windows Presentation Foundation (WPF), ale odblokuje mnoho scénářů přenosu. Další informace najdete v tématu Analýza závislostí pro portování kódu z rozhraní .NET Framework do .NET.

Nedostupné technologie

V rozhraní .NET Framework existuje několik technologií, které v .NET neexistují:

  • Domény aplikací

    Vytváření dalších domén aplikace se nepodporuje. Pro izolaci kódu použijte jako alternativu samostatné procesy nebo kontejnery.

  • Remoting

    Vzdálené komunikace se používá pro komunikaci mezi doménami aplikací, které se už nepodporují. Pro jednoduchou komunikaci mezi procesy zvažte mechanismy komunikace mezi procesy (IPC) jako alternativu k vzdálené komunikaci, jako System.IO.Pipes je třída nebo MemoryMappedFile třída. Pro složitější scénáře zvažte architektury, jako je StreamJsonRpc nebo ASP.NET Core (buď pomocí služeb gRPC nebo RESTful Web API).

  • Zabezpečení přístupu kódu (CAS)

    CAS byla technika sandboxu podporovaná rozhraním .NET Framework, ale v rozhraní .NET Framework 4.0 je zastaralá. Byla nahrazena transparentností zabezpečení a není podporována v .NET. Místo toho použijte hranice zabezpečení poskytované operačním systémem, jako je virtualizace, kontejnery nebo uživatelské účty.

  • Transparentnost zabezpečení

    Podobně jako u casu se tato technika sandboxu už nedoporučuje pro aplikace rozhraní .NET Framework a nepodporuje se v .NET. Místo toho použijte hranice zabezpečení poskytované operačním systémem, jako je virtualizace, kontejnery nebo uživatelské účty.

  • System.EnterpriseServices

    System.EnterpriseServices (COM+) se v .NET nepodporuje.

  • Windows Workflow Foundation (WF)

    WF se nepodporuje v .NET 5 nebo novějších (včetně .NET Core). Alternativu najdete v tématu CoreWF.

Další informace o těchto nepodporovaných technologiích naleznete v tématu technologie .NET Framework nedostupné v .NET Core a .NET 5+.

Různé platformy

.NET (dříve označované jako .NET Core) je navržený tak, aby byl multiplatformní. Pokud váš kód nezávisí na technologiích specifických pro Windows, může běžet na jiných platformách, jako jsou macOS, Linux a Android. Patří sem typy projektů, jako jsou:

  • Knihovny
  • Nástroje založené na konzole
  • Automation
  • weby ASP.NET

.NET Framework je komponenta pouze pro Windows. Pokud váš kód používá technologie nebo rozhraní API specifické pro Windows, jako jsou model Windows Forms a Windows Presentation Foundation (WPF), může kód stále běžet v .NET, ale nespustí se v jiných operačních systémech.

Je možné, že vaši knihovnu nebo konzolovou aplikaci můžete používat pro různé platformy, aniž byste museli měnit moc. Při přenosu do .NET je vhodné vzít v úvahu tuto možnost a otestovat aplikaci na jiných platformách.

Budoucnost rozhraní .NET Standard

.NET Standard je formální specifikace rozhraní .NET API, která jsou k dispozici v několika implementacích .NET. Motivací za platformou .NET Standard bylo vytvořit v ekosystému .NET větší jednotnost. Od .NET 5 byl přijat jiný přístup k vytvoření jednotnosti a tento nový přístup eliminuje potřebu .NET Standard v mnoha scénářích. Další informace najdete v tématu .NET 5 a .NET Standard.

.NET Standard 2.0 byla poslední verze pro podporu rozhraní .NET Framework.

Nástroje pro usnadnění přenosu

Místo ručního přenosu aplikace z rozhraní .NET Framework do rozhraní .NET můžete použít různé nástroje, které vám pomůžou automatizovat některé aspekty migrace. Přenos komplexního projektu je sám o sobě složitý proces. Tyto nástroje vám můžou pomoct na této cestě.

I když používáte nástroj k usnadnění přenosu aplikace, měli byste se podívat na aspekty při přenosu v tomto článku.

Pomocník pro upgrade .NET

Pomocník pro upgrade .NET je nástroj příkazového řádku, který lze spustit na různých typech aplikací rozhraní .NET Framework. Je navržený tak, aby pomohl s upgradem aplikací .NET Framework na .NET 5. Po spuštění nástroje bude aplikace ve většině případů vyžadovat větší úsilí k dokončení migrace. Tento nástroj zahrnuje instalaci analyzátorů, které vám můžou pomoct s dokončením migrace. Tento nástroj funguje na následujících typech aplikací rozhraní .NET Framework:

  • Windows Forms
  • WPF
  • ASP.NET MVC
  • Konzola
  • Knihovny tříd

Tento nástroj používá další nástroje uvedené v tomto článku a provede proces migrace. Další informace o nástroji najdete v tématu Přehled pomocníka pro upgrade .NET.

try-convert

Nástroj try-convert je globální nástroj .NET, který může převést projekt nebo celé řešení na sadu .NET SDK, včetně přesunu desktopových aplikací do .NET 5. Tento nástroj se ale nedoporučuje, pokud má váš projekt složitý proces sestavení, jako jsou vlastní úkoly, cíle nebo importy.

Další informace najdete v úložišti try-convert GitHub.

Analyzátor přenositelnosti .NET

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.

Pokud chcete použít analyzátor přenositelnosti .NET v Visual Studio, nainstalujte rozšíření z marketplace.

Další informace naleznete v tématu Analyzátor přenositelnosti .NET.

Analyzátor kompatibility platformy

Analyzátor kompatibility platformy analyzuje, jestli používáte rozhraní API, které vyvolá PlatformNotSupportedException za běhu. I když to není běžné, pokud přecházíte z rozhraní .NET Framework 4.7.2 nebo vyšší, je vhodné zkontrolovat. Další informace o rozhraních API, která vyvolají výjimky v .NET, najdete v tématu Rozhraní API, která vždy vyvolají výjimky v .NET Core.

Další informace najdete v tématu Analyzátor kompatibility platformy.

Důležité informace o přenosu

Při přenosu aplikace do .NET zvažte následující návrhy v pořadí.

✔️ Zvažte použití Pomocníka pro upgrade .NET k migraci projektů. I když je tento nástroj ve verzi Preview, automatizuje většinu ručních kroků popsaných v tomto článku a poskytuje skvělý výchozí bod pro pokračování cesty migrace.

✔️ Zvažte nejprve prozkoumání závislostí. Vaše závislosti musí cílit na .NET 5, .NET Standard nebo .NET Core.

✔️ Proveďte migraci ze souboru NuGetpackages.config do PackageReference nastavení v souboru projektu. Soubor můžete převést package.configpomocí Visual Studio.

✔️ Zvažte upgrade na nejnovější formát souboru projektu, i když ještě nemůžete aplikaci portovat. Projekty rozhraní .NET Framework používají zastaralý formát projektu. I když byl pro .NET Core vytvořen nejnovější formát projektu označovaný jako projekty ve stylu sady SDK a dále, pracují s rozhraním .NET Framework. Když budete mít soubor projektu v nejnovějším formátu, budete mít dobrý základ pro přenos aplikace v budoucnu.

✔️ Do retarget your .NET Framework project to aspoň .NET Framework 4.7.2. Tím zajistíte dostupnost nejnovějších alternativ rozhraní API pro případy, kdy .NET Standard nepodporuje existující rozhraní API.

✔️ ZVAŽTE cílení na .NET 5 místo .NET Core 3.1. Zatímco .NET Core 3.1 je pod dlouhodobou podporou (LTS), .NET 5 je nejnovější a .NET 6 bude ltS po vydání.

✔️ Cílí na .NET 5 pro projekty model Windows Forms a WPF. .NET 5 obsahuje mnoho vylepšení desktopových aplikací.

✔️ Zvažte cílení na .NET Standard 2.0, pokud migrujete knihovnu, která se dá použít i u projektů .NET Framework. Knihovnu můžete také cílit na více cílů, které cílí na rozhraní .NET Framework i .NET Standard.

✔️ Přidejte odkaz na Microsoft.Windows. Kompatibilita NuGet balíčku, pokud po migraci dojde k chybám chybějících rozhraní API. Velká část povrchu rozhraní API rozhraní .NET Framework je k dispozici pro .NET prostřednictvím balíčku NuGet.

Viz také