Portieren auf .NET Core – Analysieren der Abhängigkeiten von DrittanbieternPorting to .NET Core - Analyzing your Third-Party Party Dependencies

Der erste Schritt bei der Portierung besteht darin, die Abhängigkeiten von Drittanbietern zu verstehen.The first step in the porting process is to understand your third party dependencies. Sie müssen herausfinden, welche gegebenenfalls noch nicht unter .NET Core ausgeführt werden und für diese einen Notfallplan entwickeln.You need to figure out which of them, if any, don't yet run on .NET Core, and develop a contingency plan for those which don't run on .NET Core.

Erforderliche KomponentenPrerequisites

In diesem Artikel wird davon ausgegangen, dass Sie Windows und Visual Studio sowie Code verwenden, der derzeit auf .NET Framework ausgeführt wird.This article will assume you are using Windows and Visual Studio, and that you have code which runs on the .NET Framework today.

Analysieren von NuGet-PaketenAnalyzing NuGet Packages

Die Analyse von NuGet-Paketen für Portabilität ist sehr einfach.Analyzing NuGet packages for portability is very easy. Da ein NuGet-Paket selbst eine Reihe von Ordnern darstellt, die plattformspezifische Assemblys enthalten, müssen Sie lediglich überprüfen, ob ein Ordner mit einer .NET Core-Assembly vorhanden ist.Because a NuGet package is itself a set of folders which contain platform-specific assemblies, all you have to do is check to see if there is a folder which contains a .NET Core assembly.

Am einfachsten überprüfen Sie die NuGet-Paket-Ordner mit dem Tool NuGet-Paket-Explorer.Inspecting NuGet Package folders is easiest with the NuGet Package Explorer tool. Und so gehen Sie dabei vor.Here's how to do it.

  1. Laden Sie den NuGet-Paket-Explorer herunter, und öffnen Sie ihn.Download and open the NuGet Package Explorer.
  2. Klicken Sie auf „Open package from online feed“ (Paket im Online-Feed öffnen).Click "Open package from online feed".
  3. Suchen Sie nach dem Namen des Pakets.Search for the name of the package.
  4. Erweitern Sie den Ordner „Lib“ auf der rechten Seite, und suchen Sie in den Ordnernamen.Expand the "lib" folder on the right-hand side and look at folder names.

Unter nuget.org können Sie im Abschnitt Dependencies (Abhängigkeiten) der Seite für dieses Paket auch sehen, was von einem Paket unterstützt wird.You can also see what a package supports on nuget.org under the Dependencies section of the page for that package.

In beiden Fällen müssen Sie unter nuget.org nach einem Ordner oder Eintrag mit einem der folgenden Namen suchen:In either case, you'll need to look for a folder or entry on nuget.org with any of the following names:

netstandard1.0
netstandard1.1
netstandard1.2
netstandard1.3
netstandard1.4
netstandard1.5
netstandard1.6
netcoreapp1.0
portable-net45-win8
portable-win8-wpa8
portable-net451-win81
portable-net45-win8-wpa8-wpa81

Hierbei handelt es sich um Target Framework Moniker (TFM), die den Versionen von .NET-Standard und den herkömmlichen PCL-Profilen (Portable Class Library) zugeordnet sind, die mit .NET Core kompatibel sind.These are the Target Framework Monikers (TFM) which map to versions of the .NET Standard and traditional Portable Class Library (PCL) profiles which are compatible with .NET Core. Beachten Sie, dass netcoreapp1.0 zwar kompatibel ist, jedoch nicht für Bibliotheken, sondern für Anwendungen verwendet wird.Note that netcoreapp1.0, while compatible, is for applications and not libraries. Sie können zwar eine netcoreapp1.0-basierte Bibliothek verwenden, diese wird jedoch von anderen netcoreapp1.0-Anwendungen möglicherweise für nichts anderes als für den Verbrauch verwendet.Although there's nothing wrong with using a library which is netcoreapp1.0-based, that library may not be intended for anything other than consumption by other netcoreapp1.0 applications.

Es gibt auch einige ältere TFMs, die in Vorabversionen von .NET Core verwendet wurden, die möglicherweise ebenfalls kompatibel sind:There are also some legacy TFMs used in pre-release versions of .NET Core that may also be compatible:

dnxcore50
dotnet5.0
dotnet5.1
dotnet5.2
dotnet5.3
dotnet5.4
dotnet5.5

Die Wahrscheinlichkeit ist hoch, dass diese mit Ihrem Code funktionieren, eine Garantie für die Kompatibilität besteht jedoch nicht.While these will likely work with your code, there is no guarantee of compatibility. Pakete mit diesen TFMs wurden mit der Vorabversion von .NET Core-Paketen erstellt.Packages with these TFMs were built with pre-release .NET Core packages. Achten Sie darauf, wann (oder ob) Pakete wie dieses so aktualisiert werden, dass sie auf netstandard basieren.Take note of when (or if) packages like this are updated to be netstandard-based.

Hinweis

Wenn Sie ein Paket auf eine herkömmliche PCL oder Vorabversion von .NET Core ausrichten möchten, müssen Sie die imports-Anweisung in Ihrer project.json-Datei verwenden.To use a package targeting a traditional PCL or pre-release .NET Core target, you must use the imports directive in your project.json file.

Vorgehensweise, wenn die NuGet-Paket-Abhängigkeit unter .NET Core nicht ausgeführt wirdWhat to do when your NuGet package dependency doesn't run on .NET Core

Es gibt einige Dinge, die Sie tun können, wenn ein NuGet-Paket, auf das Sie angewiesen sind, unter .NET Core nicht ausgeführt wird.There are a few things you can do if a NuGet package you depend on won't run on .NET Core.

  1. Wenn es sich um ein Open Source-Projekt handelt, das beispielsweise von GitHub gehostet wird, können Sie sich direkt an den oder die Entwickler wenden.If the project is open source and hosted somewhere like GitHub, you can engage the developer(s) directly.
  2. Über nuget.org können Sie sich direkt an den Entwickler wenden, indem Sie nach dem Paket suchen und links auf der Seite des Pakets auf „Contact Owners“ (An Besitzer wenden) klicken.You can contact the author directly on nuget.org by searching for the package and clicking "Contact Owners" on the left hand side of the package's page.
  3. Sie können nach einem anderen Paket suchen, das unter .NET Core ausgeführt wird und denselben Zweck erfüllt wie das Paket, das Sie bisher verwendet haben.You can look for another package that runs on .NET Core which accomplishes the same task as the package you were using.
  4. Sie können den vom Paket ausgeführten Code selbst schreiben.You can attempt to write the code the package was doing yourself.
  5. Sie können die Abhängigkeit für das Paket eliminieren, indem Sie die Funktionalität Ihrer Anwendung ändern, zumindest bis eine kompatible Version des Pakets verfügbar ist.You could eliminate the dependency on the package by changing the functionality of your app, at least until a compatible version of the package becomes available.

Denken Sie daran, dass Betreiber von Open Source-Projekten und Herausgeber von NuGet-Paketen häufig ehrenamtlich tätig sind, sich kostenlos um einen bestimmten Bereich kümmern, und ansonsten einer anderen Tätigkeit nachgehen.Please remember that open source project maintainers and NuGet package publishers are often volunteers who contribute because they care about a given domain, do it for free, and often have a different daytime job. Wenn Sie bei ihnen anfragen, sollten Sie mit einer positiven Äußerung zu der Bibliothek beginnen, bevor Sie um Unterstützung bei .NET Core bitten.If you do reach out, you might start with a positive statement about the library before asking about .NET Core support.

Wenn es Ihnen mit den genannten Vorschlägen nicht gelingt, Ihr Problem zu beheben, müssen Sie sich mit dem Portieren auf .NET Core noch etwas gedulden.If you're unable to resolve your issue with any of the above, you may have to port to .NET Core at a later date.

Das .NET-Team würde gerne wissen, welche Bibliotheken als Nächstes von .NET Core unterstützt werden sollten.The .NET Team would like to know which libraries are the most important to support next with .NET Core. Sie können uns gerne per E-Mail an dotnet@microsoft.com mitteilen, welche Bibliotheken Sie gerne verwenden würden.You can also send us mail at dotnet@microsoft.com about the libraries you'd like to use.

Analysieren von Abhängigkeiten, bei denen es sich nicht um NuGet-Pakete handeltAnalyzing Dependencies which aren't NuGet Packages

Möglicherweise verfügen Sie über eine Abhängigkeit, bei der es sich nicht um ein NuGet-Paket, sondern beispielsweise um eine DLL im Dateisystem handelt.You may have a dependency that isn't a NuGet package, such as a DLL in the filesystem. Wenn Sie feststellen möchten, ob diese Abhängigkeit portiert werden kann, haben Sie nur die Möglichkeit, das Tool ApiPort auszuführen.The only way to determine the portability of that dependency is to run the ApiPort tool.

Nächste SchritteNext steps

Wenn Sie eine Bibliothek portieren, lesen Sie Portieren von Bibliotheken.If you're porting a library, check out Porting your Libraries.