Přehled přenosu z .NET Framework do .NET
Tento článek obsahuje přehled toho, co byste měli zvážit při přenosu kódu z .NET Framework do .NET (dříve s názvem .NET Core). Přenos do .NET z .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 k dispozici v .NET (například knihovny, konzolové aplikace a desktopové aplikace), obvykle vyžadují jen 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.
Nedostupné technologie
Existuje několik technologií v .NET Framework, které v .NET neexistují:
-
Vytváření dalších domén aplikací se nepodporuje. Pro izolaci kódu použijte jako alternativu samostatné procesy nebo kontejnery.
-
Vzdálená komunikace se používá ke komunikaci mezi doménami aplikace, které se už nepodporují. Pro jednoduchou komunikaci mezi procesy zvažte mechanismy komunikace mezi procesy (IPC) jako alternativu ke vzdálené komunikaci, jako je System.IO.Pipes třída nebo MemoryMappedFile třída. U složitějších scénářů 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á .NET Framework, ale ve .NET Framework 4.0 zastaralá. Byla nahrazena transparentností zabezpečení a v .NET se nepodporuje. Místo toho použijte hranice zabezpečení poskytované operačním systémem, například virtualizaci, kontejnery nebo uživatelské účty.
-
Podobně jako u CAS se tato technika sandboxu už nedoporučuje pro .NET Framework a v .NET se nepodporuje. Místo toho použijte hranice zabezpečení poskytované operačním systémem, například virtualizaci, kontejnery nebo uživatelské účty.
-
System.EnterpriseServices (COM+) není v .NET podporováno.
Windows Workflow Foundation (WF) a Windows Communication Foundation (WCF)
WF a WCF nejsou podporované v .NET 5+ (včetně .NET Core). Alternativy najdete v tématu CoreWF a CoreWCF.
Další informace o těchto nepodporovaných technologiích najdete v tématu .NET Framework technologie, které nejsou k dispozici v .NET Core a .NET 5+.
Windows desktopových technologií
Mnoho aplikací vytvořených pro .NET Framework používá desktopovou technologii, jako je Windows Forms nebo Windows Presentation Foundation (WPF). Oba Windows Forms a WPF byly portovány do rozhraní .NET, ale zůstávají Windows technologiemi.
Před migrací aplikace Forms nebo WPF Windows následující závislosti:
- Project soubory pro .NET používají jiný formát než .NET Framework.
- Váš projekt může používat rozhraní API, které není dostupné v .NET.
- Ovládací prvky a knihovny třetích stran možná nebyly portovány do rozhraní .NET a zůstaly dostupné pouze pro .NET Framework.
- Váš projekt používá technologii, která už v .NET není dostupná.
.NET používá open source verze Windows Forms a WPF a zahrnuje vylepšení v .NET Framework.
Kurzy týkající se migrace desktopové aplikace na .NET 5 najdete v následujících článcích:
Windows specifická rozhraní API
Aplikace mohou stále vyvolat nativní knihovny P/Invoke na platformách podporovaných platformou .NET. Tato technologie není omezena na Windows. Pokud je však knihovna, na kterou odkazujete, specifická pro Windows, například user32.dll nebo kernel32.dll, pak kód funguje pouze na Windows. Pro každou platformu, na které chcete aplikaci spouštět, budete muset buď najít verze specifické pro platformu, nebo zajistit, aby byl kód dostatečně obecný, aby byl spuštěn na všech platformách.
Při přenosu aplikace z .NET Framework do .NET vaše aplikace pravděpodobně používala knihovnu, která je distribuována s .NET Framework. Mnoho rozhraní API dostupných v .NET Framework se do .NET ne portuje, protože spoléhaly na technologii specifickou pro Windows, jako je Windows Registry nebo model GDI+ kreslení.
Sada Windows Compatibility Pack poskytuje velkou část plochy rozhraní .NET Framework API pro .NET a poskytuje se prostřednictvím microsoft.Windows. Kompatibilita NuGet balíčku.
Další informace naleznete v části Use the Windows Compatibility Pack to port code to .NET.
.NET Framework režimu kompatibility
Režim .NET Framework kompatibility byl představen v .NET Standard 2.0. Tento režim kompatibility umožňuje .NET Standard a .NET 5+ (a .NET Core 3.1 .NET Framework) odkazovat na knihovny Windows jen pro čtení. Odkazování .NET Framework knihoven nefunguje pro všechny projekty, například pokud knihovna používá rozhraní API Windows Presentation Foundation (WPF), ale odblokuje mnoho scénářů přenosu. Další informace najdete v tématu Analýza závislostí na kód portu z .NET Framework do .NET.
Různé platformy
Platforma .NET (dříve označovaná jako .NET Core) je navržená pro více platforem. Pokud váš kód nezávisí na technologiích specifických Windows, může běžet na jiných platformách, jako je macOS, Linux a Android. To zahrnuje typy projektů, jako jsou:
- Knihovny
- Nástroje založené na konzole
- Automation
- ASP.NET lokality
.NET Framework je Windows jenom pro čtení. Pokud váš kód používá technologie Windows rozhraní API, jako jsou Windows Forms Windows Windows Presentation Foundation (WPF), může kód běžet i v .NET, ale ne v jiných operačních systémech.
Je možné, že knihovnu nebo konzolovou aplikaci můžete používat pro více platforem, aniž byste toho změnili. Při přenosu do rozhraní .NET byste měli vzít v úvahu a otestovat aplikaci na jiných platformách.
Budoucnost .NET Standard
.NET Standard je formální specifikace rozhraní .NET API, která jsou k dispozici v několika implementacích rozhraní .NET. Motivací pro .NET Standard bylo vytvořit v ekosystému .NET větší jednotnost. Počínaje rozhraním .NET 5 byl přijat jiný přístup k zajištění 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 verzi 2.0, která podporovala .NET Framework.
Nástroje pro podporu přenosu
Místo ručního přenosu aplikace z .NET Framework do .NET můžete pomocí různých nástrojů automatizovat některé aspekty migrace. Přenos komplexního projektu je sám o sobě složitý proces. V této cestě vám můžou pomoct tyto nástroje.
I když k přenosu aplikace používáte nástroj, měli byste si v tomto článku prohlédněte část Důležité informace týkající se přenosu.
Pomocník s upgradem .NET
Pomocník s upgradem .NET je nástroj příkazového řádku, který lze spustit na různých typech .NET Framework aplikací. Je navržený tak, aby pomáhal s upgradem .NET Framework na .NET 5. Po spuštění nástroje bude ve většině případů aplikace vyžadovat větší úsilí k dokončení migrace . Součástí nástroje je instalace analyzátorů, které vám mohou s dokončením migrace pomoct. Tento nástroj funguje na následujících typech .NET Framework aplikací:
- 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 nástroje .NET Upgrade Assistant.
try-convert
Nástroj try-convert je globální nástroj .NET, který dokáže převést projekt nebo celé řešení na sadu .NET SDK, včetně přesunu desktopových aplikací na .NET 5. Tento nástroj se ale nedoporučuje, pokud má váš projekt složitý proces sestavení, jako jsou vlastní úlohy, cíle nebo importy.
Další informace najdete v úložišti try-convert GitHub .
.NET Portability Analyzer
.NET Portability Analyzer je nástroj, který analyzuje sestavení a poskytuje podrobnou sestavu o rozhraních .NET API, která chybí pro přenositelnost aplikací nebo knihoven na určených cílových platformách .NET.
Pokud chcete používat analyzátor přenositelnosti .NET v Visual Studio, nainstalujte rozšíření z marketplace.
Další informace najdete v tématu Analyzátor přenositelnosti rozhraní .NET.
Analyzátor kompatibility platformy
Analyzátor kompatibility platformy analyzuje, jestli používáte rozhraní API, které vyvolá výjimku PlatformNotSupportedException za běhu. I když to není běžné, pokud přechádváte z .NET Framework 4.7.2 nebo vyšší, je dobré to zkontrolovat. Další informace o rozhraních API, která v rozhraní .NET vyvolá výjimku, najdete v tématu Rozhraní API, která v .NET Corevždy vyvolá výjimku.
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í.
✔️ svých projektů zvažte použití nástroje .NET Upgrade Assistant. 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í postupu migrace.
✔️ NEJPRVE ZVAŽTE 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 nastavení v PackageReference souboru projektu. Pomocí Visual Studio převeďte package.config soubor.
✔️, že byste měli upgradovat na nejnovější formát souboru projektu, i když ještě aplikaci nemůžete portovat. .NET Framework používají zastaralý formát projektu. I když byl nejnovější formát projektu, označované jako projekty ve stylu sady SDK, vytvořen pro .NET Core a dál, pracují s .NET Framework. Soubor projektu v nejnovějším formátu vám poskytne dobrý základ pro budoucí přenos aplikace.
✔️ cílení projektu .NET Framework na minimálně .NET Framework 4.7.2. Tím se zajistí dostupnost nejnovějších alternativ rozhraní API v případech, kdy .NET Standard nepodporuje stávající rozhraní API.
✔️ .NET Core 3.1 zacílete na .NET 5. I když je .NET Core 3.1 v rámci dlouhodobé podpory (LTS), .NET 5 je nejnovější a .NET 6 bude po vydání LTS.
✔️ DO cílí na .NET 5 pro Windows Forms a WPF. .NET 5 obsahuje mnoho vylepšení pro desktopové aplikace.
✔️ migrujete knihovnu, kterou je možné .NET Standard s projekty použít, zvažte .NET Framework 2.0. Knihovnu můžete také vícenásobně zacílením na .NET Framework i .NET Standard.
✔️ DO přidejte odkaz na Microsoft.Windows. Kompatibilita NuGet, pokud po migraci dojde k chybám chybějících rozhraní API. Velká část plochy rozhraní .NET FRAMEWORK API je k dispozici pro .NET prostřednictvím NuGet balíčku.