Analyseer uw afhankelijkheden naar poortcode van .NET Framework naar .NET

Als u de niet-ondersteunde afhankelijkheden van derden in uw project wilt identificeren, moet u eerst uw afhankelijkheden begrijpen. Externe afhankelijkheden zijn de NuGet-pakketten of .dll bestanden waarnaar u in uw project verwijst, maar die u niet zelf bouwt.

Het overzetten van uw code naar .NET Standard 2.0 of lager zorgt ervoor dat deze kan worden gebruikt met zowel .NET Framework als .NET. Als u de bibliotheek echter niet met .NET Framework hoeft te gebruiken, kunt u overwegen om de nieuwste versie van .NET te gebruiken.

Uw NuGet-pakketten migreren naar PackageReference

.NET kan het packages.config-bestand niet gebruiken voor NuGet-verwijzingen. Zowel .NET als .NET Framework kunnen PackageReference gebruiken om pakketafhankelijkheden op te geven. Als u packages.config gebruikt om uw pakketten in uw project op te geven, converteert u deze naar de PackageReference indeling.

Zie het artikel Migreren van packages.config naar PackageReference voor meer informatie over het migreren.

Uw NuGet-pakketten upgraden

Nadat u uw project naar de PackageReference indeling hebt gemigreerd, controleert u of uw pakketten compatibel zijn met .NET.

Voer eerst een upgrade uit van uw pakketten naar de nieuwste versie die u kunt. Dit kan worden gedaan met de Gebruikersinterface van NuGet Pakketbeheer in Visual Studio. Het is waarschijnlijk dat nieuwere versies van uw pakketafhankelijkheden al compatibel zijn met .NET Core.

Uw pakketafhankelijkheden analyseren

Als u nog niet hebt gecontroleerd of uw geconverteerde en bijgewerkte pakketafhankelijkheden op .NET Core werken, kunt u dit op twee manieren bereiken:

Gebruik nuget.org

U kunt de Target Framework Monikers (TFM's) zien die elk pakket ondersteunt op nuget.org onder de sectie Afhankelijkheden van de pakketpagina.

Hoewel het gebruik van de site een eenvoudigere methode is om de compatibiliteit te controleren, is informatie over afhankelijkheden niet beschikbaar op de site voor alle pakketten.

NuGet Package Explorer gebruiken

Een NuGet-pakket is zelf een set mappen die platformspecifieke assembly's bevatten. Controleer of er een map is die een compatibele assembly in het pakket bevat.

De eenvoudigste manier om NuGet-pakketmappen te inspecteren, is door het hulpprogramma NuGet Package Explorer te gebruiken. Nadat u deze hebt geïnstalleerd, gebruikt u de volgende stappen om de mapnamen te bekijken:

  1. Open the NuGet Package Explorer.
  2. Klik op Pakket openen vanuit onlinefeed.
  3. Zoek de naam van het pakket.
  4. Selecteer de pakketnaam in de zoekresultaten en klik op Openen.
  5. Vouw de lib-map aan de rechterkant uit en bekijk de mapnamen.

Zoek naar een map met namen met een van de volgende patronen: netstandardX.Y, netX.Yof netcoreappX.Y.

Deze waarden zijn de Target Framework Monikers (TFM's) die zijn toegewezen aan versies van .NET Standard, .NET en .NET Core, die allemaal compatibel zijn met .NET.

Belangrijk

Wanneer u kijkt naar de TFM's die door een pakket worden ondersteund, moet u er rekening mee houden dat een andere TFM dan gericht is op netstandard* een specifieke implementatie van .NET, zoals .NET 5, .NET Core of .NET Framework. Vanaf .NET 5 vervangt de net* TFM (zonder besturingssysteemaanduiding) effectief als een draagbaar doel.netstandard* Richt zich bijvoorbeeld net5.0 op het .NET 5 API-oppervlak en is platformoverschrijdend, maar net5.0-windows is gericht op het .NET 5 API-oppervlak zoals geïmplementeerd op het Windows-besturingssysteem.

.NET Framework-compatibiliteitsmodus

Nadat u de NuGet-pakketten hebt geanalyseerd, kan het zijn dat ze alleen gericht zijn op .NET Framework.

Vanaf .NET Standard 2.0 is de .NET Framework-compatibiliteitsmodus geïntroduceerd. Met deze compatibiliteitsmodus kunnen .NET Standard- en .NET Core-projecten verwijzen naar .NET Framework-bibliotheken. Het verwijzen naar .NET Framework-bibliotheken werkt niet voor alle projecten, bijvoorbeeld als de bibliotheek GEBRUIKMAAKT van WPF-API's (Windows Presentation Foundation), maar er worden wel veel overdrachtsscenario's gedeblokkeerd.

Wanneer u verwijst naar NuGet-pakketten die gericht zijn op .NET Framework in uw project, zoals Huitian.PowerCollections, krijgt u een waarschuwing voor terugval van pakketten (NU1701) die vergelijkbaar zijn met het volgende voorbeeld:

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.

Deze waarschuwing wordt weergegeven wanneer u het pakket toevoegt en telkens wanneer u bouwt om ervoor te zorgen dat u dat pakket test met uw project. Als uw project werkt zoals verwacht, kunt u deze waarschuwing onderdrukken door de pakketeigenschappen in Visual Studio te bewerken of door het projectbestand handmatig te bewerken in uw favoriete code-editor.

Als u de waarschuwing wilt onderdrukken door het projectbestand te bewerken, zoekt u de PackageReference vermelding voor het pakket waarvoor u de waarschuwing wilt onderdrukken en voegt u het NoWarn kenmerk toe. Het NoWarn kenmerk accepteert een door komma's gescheiden lijst met alle waarschuwings-id's. In het volgende voorbeeld ziet u hoe u de NU1701 waarschuwing voor het Huitian.PowerCollections pakket onderdrukt door het projectbestand handmatig te bewerken:

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

Zie Waarschuwingen onderdrukken voor NuGet-pakketten voor meer informatie over het onderdrukken van compilerwaarschuwingen in Visual Studio.

Als NuGet-pakketten niet worden uitgevoerd op .NET

Er zijn enkele dingen die u kunt doen als een NuGet-pakket waarvoor u afhankelijk bent niet wordt uitgevoerd op .NET Core:

  • Als het project open source is en ergens als GitHub wordt gehost, kunt u de ontwikkelaars rechtstreeks betrekken.
  • U kunt rechtstreeks contact opnemen met de auteur op nuget.org. Zoek het pakket en klik aan de linkerkant van de pagina van het pakket op Eigenaren van contactpersonen.
  • U kunt zoeken naar een ander pakket dat wordt uitgevoerd op .NET Core waarmee dezelfde taak wordt uitgevoerd als het pakket dat u gebruikte.
  • U kunt proberen de code te schrijven die het pakket zelf deed.
  • U kunt de afhankelijkheid van het pakket elimineren door de functionaliteit van uw app te wijzigen, ten minste totdat een compatibele versie van het pakket beschikbaar is.

Houd er rekening mee dat opensource-projectonderhouders en NuGet-pakketuitgevers vaak vrijwilligers zijn. Ze dragen bij omdat ze om een bepaald domein geven, het gratis doen en vaak een andere dag/tijd-taak hebben. Houd er rekening mee wanneer u contact met hen opvraagt om .NET Core-ondersteuning.

Als u uw probleem met een van deze opties niet kunt oplossen, moet u mogelijk op een later tijdstip overzetten naar .NET Core.

Het .NET-team wil graag weten welke bibliotheken het belangrijkst zijn voor ondersteuning met .NET Core. U kunt een e-mailbericht verzenden naar dotnet@microsoft.com de bibliotheken die u wilt gebruiken.

Niet-NuGet-afhankelijkheden analyseren

Mogelijk hebt u een afhankelijkheid die geen NuGet-pakket is, zoals een DLL in het bestandssysteem. U kunt de draagbaarheid van die afhankelijkheid bepalen met behulp van de binaire analysefunctionaliteit van de .NET Upgrade Assistant.

Volgende stappen