A .NET-keretrendszer és a .NET közötti portkódhoz való függőségek elemzése

A projekt nem támogatott külső függőségeinek azonosításához először ismernie kell a függőségeket. A külső függőségek a projektben hivatkozott NuGet-csomagok vagy .dll -fájlok, amelyeket azonban nem saját maga készít.

Ha a kódot a .NET Standard 2.0-s vagy újabb verziójába portozza, akkor az .NET-keretrendszer és a .NET használatával is használható. Ha azonban nem kell használnia a kódtárat .NET-keretrendszer, fontolja meg a .NET legújabb verziójának megcélzását.

NuGet-csomagok migrálása PackageReference

A .NET nem tudja használni a packages.config fájlt NuGet-hivatkozásokhoz. A .NET és a .NET-keretrendszer a PackageReference használatával is megadhatja a csomagfüggőségeket. Ha a packages.config használatával adja meg a csomagokat a projektben, konvertálja a PackageReference formátumot.

A migrálás módjáról az Áttelepítés a packages.config-ból a PackageReference-be című cikkből tájékozódhat.

NuGet-csomagok frissítése

A projekt formátumba való PackageReference migrálása után ellenőrizze, hogy a csomagok kompatibilisek-e a .NET-tel.

Először frissítse csomagjait a legújabb verzióra. Ez a Visual Studióban a NuGet Csomagkezelő felhasználói felületével végezhető el. Valószínű, hogy a csomagfüggőségek újabb verziói már kompatibilisek a .NET Core-jal.

A csomagfüggőségek elemzése

Ha még nem ellenőrizte, hogy a konvertált és frissített csomagfüggőségek működnek-e a .NET Core-on, kétféleképpen érheti el ezt:

Nuget.org használata

Az egyes csomagok által támogatott Target Framework Monikers (TFM-ek) a csomagoldal Függőségek szakaszában nuget.orgláthatók.

Bár a webhely használata egyszerűbb módszer a kompatibilitás ellenőrzésére, a függőségek adatai nem érhetők el a webhelyen az összes csomag esetében.

A NuGet Package Explorer használata

A NuGet-csomagok maguk is olyan mappák, amelyek platformspecifikus szerelvényeket tartalmaznak. Ellenőrizze, hogy van-e olyan mappa, amely kompatibilis szerelvényt tartalmaz a csomagban.

A NuGet-csomagmappák vizsgálatának legegyszerűbb módja a NuGet Csomagkezelő eszköz használata. A telepítés után a következő lépésekkel tekintheti meg a mappaneveket:

  1. Nyissa meg a NuGet Csomagkezelőt.
  2. Kattintson a Csomag megnyitása online hírcsatornából elemre.
  3. Keresse meg a csomag nevét.
  4. Válassza ki a csomag nevét a keresési eredmények közül, és kattintson a Megnyitás gombra.
  5. Bontsa ki a jobb oldalon lévő lib mappát, és tekintse meg a mappaneveket.

Keresse meg a következő mintákat használó neveket tartalmazó mappát: netstandardX.Y, netX.Yvagy netcoreappX.Y.

Ezek az értékek a Target Framework Monikers (TFM-ek), amelyek a .NET Standard, a .NET és a .NET Core verzióihoz vannak megfeleltetve, amelyek mind kompatibilisek a .NET-tel.

Fontos

Ha a csomag által támogatott TFM-eket tekinti meg, vegye figyelembe, hogy a .NET adott implementációját (például .NET 5, .NET Core vagy .NET-keretrendszer) célzó TFM-ek kivételévelnetstandard*. A .NET 5-től kezdve a net* TFM (operációs rendszer megjelölése nélkül) gyakorlatilag hordozható célként helyettesítnetstandard*. Például a .NET 5 API felületét célozza meg, net5.0 és platformfüggetlen, de net5.0-windows a Windows operációs rendszeren implementált .NET 5 API-felületet célozza meg.

.NET-keretrendszer kompatibilitási mód

A NuGet-csomagok elemzése után előfordulhat, hogy csak .NET-keretrendszer céloznak meg.

A .NET Standard 2.0-tól kezdve bevezettük a .NET-keretrendszer kompatibilitási módot. Ezzel a kompatibilitási móddal a .NET Standard és a .NET Core-projektek .NET-keretrendszer kódtárakra hivatkoznak. A .NET-keretrendszer kódtárakra való hivatkozás nem minden projekt esetében működik, például ha a tár Windows megjelenítési alaprendszer (WPF) API-kat használ, de számos portálási forgatókönyv letiltását oldja fel.

Ha olyan NuGet-csomagokra hivatkozik, amelyek .NET-keretrendszer a projektben, például Huitian.PowerCollectionsa következő példához hasonló csomagvisszaeső figyelmeztetést (NU1701) kap:

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.

Ez a figyelmeztetés akkor jelenik meg, amikor hozzáadja a csomagot, és minden buildeléskor annak érdekében, hogy tesztelje a csomagot a projekttel. Ha a projekt a várt módon működik, ezt a figyelmeztetést letilthatja a Visual Studióban lévő csomagtulajdonságok szerkesztésével vagy a projektfájl manuális szerkesztésével a kedvenc kódszerkesztőben.

Ha el szeretné tiltani a figyelmeztetést a projektfájl szerkesztésével, keresse meg annak a csomagnak a PackageReference bejegyzését, amelyhez el szeretné tiltani a figyelmeztetést, és adja hozzá az NoWarn attribútumot. Az NoWarn attribútum elfogadja az összes figyelmeztető azonosító vesszővel tagolt listáját. Az alábbi példa bemutatja, hogyan tilthatja el a NU1701 csomagra vonatkozó figyelmeztetést a Huitian.PowerCollections projektfájl manuális szerkesztésével:

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

A fordítói figyelmeztetések Visual Studióban való letiltásáról további információt a NuGet-csomagok figyelmeztetéseinek mellőzése című témakörben talál.

Ha a NuGet-csomagok nem futnak a .NET-en

Ha egy függő NuGet-csomag nem fut a .NET Core-on, néhány dolgot tehet:

  • Ha a projektet nyílt forráskód, és valahol, például a GitHubon üzemeltetik, közvetlenül bevonhatja a fejlesztőket.
  • Közvetlenül a nuget.org kapcsolatba léphet a szerzővel. Keresse meg a csomagot, és kattintson a Partnertulajdonosok elemre a csomag oldalának bal oldalán.
  • Kereshet egy másik csomagot, amely a .NET Core-on fut, és ugyanazt a feladatot hajtja végre, mint a használt csomag.
  • Megpróbálhatja megírni azt a kódot, amelyet a csomag saját maga csinált.
  • Az alkalmazás funkcióinak módosításával megszüntetheti a csomagtól való függőséget, legalábbis addig, amíg el nem érhető a csomag kompatibilis verziója.

Ne feledje, hogy a nyílt forráskódú projektfenntartók és a NuGet-csomag közzétevői gyakran önkéntesek. Azért járulnak hozzá, mert törődnek egy adott tartománnyal, ingyenesen végzik, és gyakran más napközbeni feladatokkal rendelkeznek. Vegye figyelembe, hogy amikor kapcsolatba lép velük, kérjen .NET Core-támogatást.

Ha a fenti lehetőségek egyikével sem tudja megoldani a problémát, előfordulhat, hogy később a .NET Core-ba kell portot választania.

A .NET-csapat szeretné tudni, hogy mely kódtárak támogatottak a .NET Core-jal. E-mailt dotnet@microsoft.com küldhet a használni kívánt kódtárakról.

Nem NuGet-függőségek elemzése

Előfordulhat, hogy olyan függősége van, amely nem NuGet-csomag, például DLL a fájlrendszerben. A függőség hordozhatóságát a .NET Upgrade Assistant bináris elemzési funkciójának használatával határozhatja meg.

Következő lépések