Analizowanie zależności do kodu portu z programu .NET Framework do platformy .NET

Aby zidentyfikować nieobsługiwane zależności innych firm w projekcie, należy najpierw zrozumieć zależności. Zależności zewnętrzne to pakiety NuGet lub .dll pliki, do których odwołujesz się w projekcie, ale nie są tworzone samodzielnie.

Przenoszenie kodu do platformy .NET Standard 2.0 lub nowszej gwarantuje, że można go używać zarówno z programem .NET Framework, jak i platformą .NET. Jeśli jednak nie musisz używać biblioteki z programem .NET Framework, rozważ użycie najnowszej wersji platformy .NET.

Migrowanie pakietów NuGet do PackageReference

Platforma .NET nie może używać pliku packages.config dla odwołań NuGet. Zarówno platformy .NET, jak i .NET Framework mogą używać funkcji PackageReference do określania zależności pakietów. Jeśli używasz pliku packages.config do określania pakietów w projekcie, przekonwertuj PackageReference go na format.

Aby dowiedzieć się, jak przeprowadzić migrację , zobacz artykuł Migrate from packages.config to PackageReference (Migrowanie z pliku packages.config do elementu PackageReference ).

Uaktualnianie pakietów NuGet

Po przeprowadzeniu migracji projektu do PackageReference formatu sprawdź, czy pakiety są zgodne z platformą .NET.

Najpierw uaktualnij pakiety do najnowszej wersji, którą możesz. Można to zrobić za pomocą interfejsu użytkownika Menedżer pakietów NuGet w programie Visual Studio. Prawdopodobnie nowsze wersje zależności pakietów są już zgodne z platformą .NET Core.

Analizowanie zależności pakietu

Jeśli nie sprawdzono jeszcze, czy przekonwertowane i uaktualnione zależności pakietów działają na platformie .NET Core, istnieją dwa sposoby osiągnięcia tego celu:

Korzystanie z nuget.org

Możesz zobaczyć platformę docelową Monikers (TFMs), którą każdy pakiet obsługuje w nuget.org w sekcji Zależności na stronie pakietu.

Chociaż użycie lokacji jest prostszą metodą sprawdzania zgodności, informacje o zależnościach nie są dostępne w lokacji dla wszystkich pakietów.

Korzystanie z Eksploratora pakietów NuGet

Pakiet NuGet to sam zestaw folderów, które zawierają zestawy specyficzne dla platformy. Sprawdź, czy istnieje folder zawierający zgodny zestaw wewnątrz pakietu.

Najprostszym sposobem inspekcji folderów pakietów NuGet jest użycie narzędzia Eksplorator pakietów NuGet. Po zainstalowaniu tego pliku wykonaj następujące kroki, aby wyświetlić nazwy folderów:

  1. Otwórz Eksplorator pakietów NuGet.
  2. Kliknij pozycję Otwórz pakiet z kanału informacyjnego online.
  3. Wyszukaj nazwę pakietu.
  4. Wybierz nazwę pakietu z wyników wyszukiwania i kliknij przycisk otwórz.
  5. Rozwiń folder lib po prawej stronie i przyjrzyj się nazwam folderów.

Wyszukaj folder o nazwach przy użyciu jednego z następujących wzorców: netstandardX.Y, netX.Ylub netcoreappX.Y.

Te wartości to Target Framework Monikers (TFMs), które są mapowane na wersje platform .NET Standard, .NET i .NET Core, które są zgodne z platformą .NET.

Ważne

Podczas przeglądania programów TFM, które obsługuje pakiet, należy pamiętać, że program TFM inny niż netstandard* docelowy określoną implementację platformy .NET, taką jak .NET 5, .NET Core lub .NET Framework. Począwszy od platformy .NET 5, program net* TFM (bez oznaczenia systemu operacyjnego) skutecznie zastępuje netstandard* jako przenośny element docelowy. Na przykład net5.0 obiekt docelowy powierzchni interfejsu API platformy .NET 5 i jest przyjazny dla wielu platform, ale net5.0-windows jest przeznaczony dla powierzchni interfejsu API platformy .NET 5 zgodnie z implementacją w systemie operacyjnym Windows.

Tryb zgodności programu .NET Framework

Po przeanalizowaniu pakietów NuGet może się okazać, że są one przeznaczone tylko dla platformy .NET Framework.

Począwszy od platformy .NET Standard 2.0, wprowadzono tryb zgodności programu .NET Framework. Ten tryb zgodności umożliwia projektom platformy .NET Standard i .NET Core odwołanie do bibliotek programu .NET Framework. Odwoływanie się do bibliotek programu .NET Framework nie działa we wszystkich projektach, takich jak jeśli biblioteka używa interfejsów API programu Windows Presentation Foundation (WPF), ale odblokuje wiele scenariuszy przenoszenia.

W przypadku odwołowania się do pakietów NuGet przeznaczonych dla programu .NET Framework w projekcie, takich jak Huitian.PowerCollections, zostanie wyświetlone ostrzeżenie o rezerwowym pakiecie (NU1701) podobne do następującego przykładu:

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.

To ostrzeżenie jest wyświetlane podczas dodawania pakietu i za każdym razem, gdy kompilujesz, aby upewnić się, że testujesz ten pakiet przy użyciu projektu. Jeśli projekt działa zgodnie z oczekiwaniami, możesz pominąć to ostrzeżenie, edytując właściwości pakietu w programie Visual Studio lub ręcznie edytując plik projektu w ulubionym edytorze kodu.

Aby pominąć ostrzeżenie, edytując plik projektu, znajdź PackageReference wpis pakietu, dla którego chcesz pominąć ostrzeżenie i dodaj NoWarn atrybut. Atrybut NoWarn akceptuje rozdzielaną przecinkami listę wszystkich identyfikatorów ostrzeżeń. W poniższym przykładzie pokazano, jak pominąć NU1701 ostrzeżenie dla Huitian.PowerCollections pakietu przez ręczne edytowanie pliku projektu:

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

Aby uzyskać więcej informacji na temat pomijania ostrzeżeń kompilatora w programie Visual Studio, zobacz Pomijanie ostrzeżeń dotyczących pakietów NuGet.

Jeśli pakiety NuGet nie będą uruchamiane na platformie .NET

Istnieje kilka czynności, które można zrobić, jeśli pakiet NuGet, od którego zależysz, nie jest uruchamiany na platformie .NET Core:

  • Jeśli projekt jest open source i hostowany w dowolnym miejscu, na przykład GitHub, możesz bezpośrednio zaangażować deweloperów.
  • Możesz skontaktować się z autorem bezpośrednio w nuget.org. Wyszukaj pakiet i kliknij pozycję Skontaktuj się z właścicielami po lewej stronie pakietu.
  • Możesz wyszukać inny pakiet uruchamiany na platformie .NET Core, który wykonuje to samo zadanie co używany pakiet.
  • Możesz spróbować napisać kod, który robił pakiet samodzielnie.
  • Możesz wyeliminować zależność od pakietu, zmieniając funkcjonalność aplikacji, co najmniej do momentu udostępnienia zgodnej wersji pakietu.

Pamiętaj, że osoby odpowiedzialne za projekty open source i wydawcy pakietów NuGet są często wolontariuszami. Przyczyniają się one, ponieważ dbają o daną domenę, wykonują ją bezpłatnie i często mają inną pracę w ciągu dnia. Należy pamiętać o tym podczas kontaktowania się z nimi, aby poprosić o pomoc techniczną platformy .NET Core.

Jeśli nie możesz rozwiązać problemu z dowolną z tych opcji, może być konieczne przenoszenie do platformy .NET Core w późniejszym terminie.

Zespół platformy .NET chce wiedzieć, które biblioteki są najważniejsze do obsługi przy użyciu platformy .NET Core. Możesz wysłać wiadomość e-mail na dotnet@microsoft.com temat bibliotek, których chcesz użyć.

Analizowanie zależności innych niż NuGet

Może istnieć zależność, która nie jest pakietem NuGet, takim jak biblioteka DLL w systemie plików. Przenośność tej zależności można określić przy użyciu funkcji analizy binarnej Asystenta uaktualniania platformy .NET.

Następne kroki