Analysera dina beroenden till portkod från .NET Framework till .NET

För att identifiera de beroenden från tredje part som inte stöds i projektet måste du först förstå dina beroenden. Externa beroenden är De NuGet-paket eller .dll -filer som du refererar till i projektet, men som du inte skapar själv.

Om du porterar koden till .NET Standard 2.0 eller lägre ser du till att den kan användas med både .NET Framework och .NET. Men om du inte behöver använda biblioteket med .NET Framework kan du överväga att rikta in dig på den senaste versionen av .NET.

Migrera dina NuGet-paket till PackageReference

.NET kan inte använda filen packages.config för NuGet-referenser. Både .NET och .NET Framework kan använda PackageReference för att ange paketberoenden. Om du använder packages.config för att ange dina paket i projektet konverterar du det till PackageReference formatet.

Mer information om hur du migrerar finns i artikeln Migrera från packages.config till PackageReference .

Uppgradera dina NuGet-paket

När du har migrerat projektet till formatet kontrollerar du om paketen PackageReference är kompatibla med .NET.

Uppgradera först paketen till den senaste versionen som du kan. Detta kan göras med NuGet Package Manager-användargränssnittet i Visual Studio. Det är troligt att nyare versioner av dina paketberoenden redan är kompatibla med .NET Core.

Analysera paketberoenden

Om du inte redan har verifierat att dina konverterade och uppgraderade paketberoenden fungerar på .NET Core finns det två sätt att uppnå detta:

Använd nuget.org

Du kan se Target Framework Monikers (TFM) som varje paket stöder på nuget.org under avsnittet Beroenden på paketsidan.

Även om det är enklare att verifiera kompatibiliteten med webbplatsen är beroendeinformation inte tillgänglig på webbplatsen för alla paket.

Använda NuGet Package Explorer

Ett NuGet-paket är i sig en uppsättning mappar som innehåller plattformsspecifika sammansättningar. Kontrollera om det finns en mapp som innehåller en kompatibel sammansättning i paketet.

Det enklaste sättet att inspektera NuGet-paketmappar är att använda verktyget NuGet Package Explorer . När du har installerat det använder du följande steg för att se mappnamnen:

  1. Öppna NuGet-paketutforskaren.
  2. Klicka på Öppna paket från onlinefeed.
  3. Sök efter paketets namn.
  4. Välj paketnamnet i sökresultatet och klicka på Öppna.
  5. Expandera mappen lib till höger och titta på mappnamn.

Leta efter en mapp med namn med ett av följande mönster: netstandardX.Y, netX.Yeller netcoreappX.Y.

Dessa värden är Target Framework Monikers (TFM) som mappar till versioner av .NET Standard, .NET och .NET Core, som alla är kompatibla med .NET.

Viktigt!

När du tittar på de TFM:er som ett paket stöder bör du tänka på att en TFM som inte netstandard* är avsedd för en specifik implementering av .NET, till exempel .NET 5, .NET Core eller .NET Framework. Från och med .NET 5 net* ersätter netstandard* TFM (utan operativsystembeteckning) effektivt som ett portabelt mål. Till exempel net5.0 riktar sig mot .NET 5 API-ytan och är plattformsoberoende, men net5.0-windows riktar in sig på .NET 5 API-ytan som implementerats i Windows-operativsystemet.

.NET Framework-kompatibilitetsläge

När du har analyserat NuGet-paketen kanske du upptäcker att de endast riktar in sig på .NET Framework.

Från och med .NET Standard 2.0 introducerades .NET Framework-kompatibilitetsläget. Med det här kompatibilitetsläget kan .NET Standard- och .NET Core-projekt referera till .NET Framework-bibliotek. Att referera till .NET Framework-bibliotek fungerar inte för alla projekt, till exempel om biblioteket använder API:er för Windows Presentation Foundation (WPF), men det avblockerar många portningsscenarier.

När du refererar till NuGet-paket som riktar in sig på .NET Framework i projektet, till exempel Huitian.PowerCollections, får du en varning om paketåterställning (NU1701) som liknar följande exempel:

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.

Varningen visas när du lägger till paketet och varje gång du skapar för att se till att du testar paketet med projektet. Om projektet fungerar som förväntat kan du ignorera den varningen genom att redigera paketegenskaperna i Visual Studio eller genom att manuellt redigera projektfilen i din favoritkodredigerare.

Om du vill ignorera varningen genom att redigera projektfilen letar du reda på PackageReference posten för det paket som du vill ignorera varningen för och lägger till NoWarn attributet. Attributet NoWarn accepterar en kommaavgränsad lista över alla varnings-ID:n. I följande exempel visas hur du utelämnar varningen NU1701 för Huitian.PowerCollections paketet genom att redigera projektfilen manuellt:

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

Mer information om hur du undertrycker kompilatorvarningar i Visual Studio finns i Utelämna varningar för NuGet-paket.

Om NuGet-paket inte körs på .NET

Det finns några saker du kan göra om ett NuGet-paket som du är beroende av inte körs på .NET Core:

  • Om projektet öppen källkod och finns någonstans som GitHub kan du kontakta utvecklarna direkt.
  • Du kan kontakta författaren direkt på nuget.org. Sök efter paketet och klicka på Kontakta ägare till vänster på paketets sida.
  • Du kan söka efter ett annat paket som körs på .NET Core som utför samma uppgift som paketet du använde.
  • Du kan försöka skriva koden som paketet gjorde själv.
  • Du kan eliminera beroendet av paketet genom att ändra appens funktioner, åtminstone tills en kompatibel version av paketet blir tillgänglig.

Kom ihåg att projektunderhållare med öppen källkod och NuGet-paketutgivare ofta är volontärer. De bidrar eftersom de bryr sig om en viss domän, gör det gratis och ofta har ett annat dagtidsjobb. Tänk på det när du kontaktar dem för att be om .NET Core-support.

Om du inte kan lösa problemet med något av dessa alternativ kan du behöva portera till .NET Core vid ett senare tillfälle.

.NET-teamet vill veta vilka bibliotek som är viktigast att stödja med .NET Core. Du kan skicka ett e-postmeddelande till dotnet@microsoft.com om de bibliotek som du vill använda.

Analysera icke-NuGet-beroenden

Du kanske har ett beroende som inte är ett NuGet-paket, till exempel en DLL i filsystemet. Du kan fastställa portabiliteten för det beroendet med .NET Upgrade Assistant-verktyget .

Nästa steg