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.org lá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:
- Nyissa meg a NuGet Csomagkezelőt.
- Kattintson a Csomag megnyitása online hírcsatornából elemre.
- Keresse meg a csomag nevét.
- Válassza ki a csomag nevét a keresési eredmények közül, és kattintson a Megnyitás gombra.
- 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.Y
vagy 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.PowerCollections
a 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 eszközzel határozhatja meg.