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:
Project soubory pro .NET používají jiný formát než rozhraní .NET Framework.
Váš projekt může používat rozhraní API, které není dostupné v .NET.
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.
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+.
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í:
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).
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.
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.
.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.
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.
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.
✔️ 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.