Analýza závislostí na kód portu z rozhraní .NET Framework do .NET

Pokud chcete identifikovat nepodporované závislosti třetích stran v projektu, musíte nejprve porozumět závislostem. Externí závislosti jsou balíčky NuGet nebo .dll soubory, na které odkazujete ve svém projektu, ale nevytvoíte se sami.

Přenos kódu na .NET Standard 2.0 nebo novější zajišťuje, že se dá použít s rozhraním .NET Framework i .NET. Pokud ale knihovnu s rozhraním .NET Framework nepotřebujete používat, zvažte cílení na nejnovější verzi .NET.

Migrace balíčků NuGet do PackageReference

.NET nemůže použít soubor packages.config pro odkazy NuGet. Rozhraní .NET i .NET Framework může k určení závislostí balíčku použít PackageReference . Pokud k určení balíčků v projektu používáte packages.config , převeďte je do PackageReference formátu.

Informace o migraci najdete v článku Migrace z packages.config na PackageReference .

Upgrade balíčků NuGet

Po migraci projektu do PackageReference formátu ověřte, jestli jsou balíčky kompatibilní s .NET.

Nejprve upgradujte balíčky na nejnovější verzi, kterou můžete použít. Můžete to provést pomocí uživatelského rozhraní NuGet Správce balíčků v sadě Visual Studio. Je pravděpodobné, že novější verze závislostí balíčků jsou již kompatibilní s .NET Core.

Analýza závislostí balíčků

Pokud jste ještě neověřili, že převedené a upgradované závislosti balíčků fungují v .NET Core, můžete toho dosáhnout dvěma způsoby:

Použití nuget.org

Můžete si prohlédnout monikers cílové architektury (TFMs), které každý balíček podporuje na nuget.org v části Závislosti na stránce balíčku.

I když je použití webu jednodušší metodou pro ověření kompatibility, informace o závislostech nejsou v lokalitě k dispozici pro všechny balíčky.

Použití Průzkumníka balíčků NuGet

Balíček NuGet je sama o sobě sadou složek, které obsahují sestavení specifická pro platformu. Zkontrolujte, jestli v balíčku existuje složka, která obsahuje kompatibilní sestavení.

Nejjednodušší způsob, jak zkontrolovat složky balíčků NuGet, je použít nástroj Průzkumník balíčků NuGet. Po instalaci použijte následující postup k zobrazení názvů složek:

  1. Otevřete Průzkumníka balíčků NuGet.
  2. Klikněte na Otevřít balíček z online informačního kanálu.
  3. Vyhledejte název balíčku.
  4. Ve výsledcích hledání vyberte název balíčku a klikněte na otevřít.
  5. Rozbalte složku lib na pravé straně a prohlédněte si názvy složek.

Vyhledejte složku s názvy pomocí jednoho z následujících vzorů: netstandardX.Y, netX.Ynebo netcoreappX.Y.

Tyto hodnoty jsou sady TFM (Target Framework Monikers), které se mapují na verze .NET Standard, .NET a .NET Core, které jsou všechny kompatibilní s .NET.

Důležité

Při pohledu na TFM, které balíček podporuje, mějte na paměti, že TFM jiný než netstandard* cílí na konkrétní implementaci .NET, například .NET 5, .NET Core nebo .NET Framework. Počínaje rozhraním .NET 5 net* se TFM (bez označení operačního systému) efektivně nahradí netstandard* jako přenosný cíl. Například cílí na net5.0 povrch rozhraní .NET 5 API a je přívětivý pro různé platformy, ale net5.0-windows cílí na plochu rozhraní .NET 5 API, jak je implementováno v operačním systému Windows.

Režim kompatibility rozhraní .NET Framework

Po analýze balíčků NuGet můžete zjistit, že cílí pouze na rozhraní .NET Framework.

Od verze .NET Standard 2.0 byl zaveden režim kompatibility rozhraní .NET Framework. Tento režim kompatibility umožňuje projektům .NET Standard a .NET Core odkazovat na knihovny rozhraní .NET Framework. Odkazování na knihovny rozhraní .NET Framework nefunguje pro všechny projekty, například pokud knihovna používá rozhraní API služby Windows Presentation Foundation (WPF), ale odblokuje mnoho scénářů přenosu.

Když odkazujete na balíčky NuGet, které cílí na rozhraní .NET Framework ve vašem projektu, například Huitian.PowerCollections, zobrazí se upozornění na náhradní balíček (NU1701), které je podobné následujícímu příkladu:

NU1701: Package ‘Huitian.PowerCollections 1.0.0’ was restored using ‘.NETFramework,Version=v4.6.1’ instead of the project target framework ‘.NETStandard,Version=v2.0’. This package may not be fully compatible with your project.

Toto upozornění se zobrazí při přidání balíčku a pokaždé, když sestavíte, abyste měli jistotu, že tento balíček otestujete s projektem. Pokud projekt funguje podle očekávání, můžete toto upozornění potlačit úpravou vlastností balíčku v sadě Visual Studio nebo ruční úpravou souboru projektu v oblíbeném editoru kódu.

Pokud chcete upozornění potlačit úpravou souboru projektu, najděte PackageReference položku balíčku, pro který chcete potlačit upozornění, a přidejte NoWarn atribut. Atribut NoWarn přijímá čárkami oddělený seznam všech ID upozornění. Následující příklad ukazuje, jak potlačit NU1701 upozornění balíčku Huitian.PowerCollections úpravou souboru projektu ručně:

<ItemGroup>
  <PackageReference Include="Huitian.PowerCollections" Version="1.0.0" NoWarn="NU1701" />
</ItemGroup>

Další informace o potlačení upozornění kompilátoru v sadě Visual Studio naleznete v tématu Potlačení upozornění pro balíčky NuGet.

Pokud se balíčky NuGet nespustí v .NET

Existuje několik věcí, které můžete udělat, pokud se balíček NuGet, na který závisíte, nespustí v .NET Core:

  • Pokud je projekt opensourcový a hostovaný někde jako GitHub, můžete zapojit přímo vývojáře.
  • Autora můžete kontaktovat přímo na nuget.org. Vyhledejte balíček a na levé straně stránky balíčku klikněte na Kontaktovat vlastníky .
  • Můžete vyhledat jiný balíček, který běží na .NET Core, který provádí stejnou úlohu jako balíček, který jste používali.
  • Můžete se pokusit napsat kód, který balíček prováděl sami.
  • Závislost na balíčku můžete eliminovat tak, že změníte funkčnost aplikace aspoň tak dlouho, dokud nebude dostupná kompatibilní verze balíčku.

Mějte na paměti, že správci opensourcových projektů a vydavatelé balíčků NuGet jsou často dobrovolníci. Přispívají, protože se zajímají o danou doménu, dělají to zdarma a často mají jinou každodenní práci. Mějte na paměti, že když se na ně obrátíte a požádejte o podporu .NET Core.

Pokud se vám nedaří problém s některou z těchto možností vyřešit, možná budete muset portovat do .NET Core později.

Tým .NET by chtěl vědět, které knihovny jsou pro podporu .NET Core nejdůležitější. Můžete poslat e-mail o dotnet@microsoft.com knihovnách, které chcete použít.

Analýza závislostí jiných než NuGet

Je možné, že máte závislost, která není balíčkem NuGet, jako je knihovna DLL v systému souborů. Přenositelnost této závislosti můžete určit pomocí binární funkce analýzy pomocníka pro upgrade .NET.

Další kroky