2016-09-16 4 views
1

Ich möchte meine vorhandene ASP.NET-API, die gegen .NET 4.6 erstellt wurde, in ASP.NET Core konvertieren. Aus kleinen Tests, die ich gemacht habe, gefällt mir, was ich mit .NET Core sehe - es ist schneller und bietet die Möglichkeit, unter Linux zu laufen.Wrapping/Konvertieren von .NET-Bibliotheken in .NET Core

Aber das größte Problem, das ich angetroffen habe, ist, dass viele Open-Source-Bibliotheken, die mit der vollständigen .NET F/W geschrieben wurden, noch nicht damit kompatibel sind (und keine Informationen gegeben werden, wenn sie jemals sein werden) . So plötzlich verliert .NET Core viel an Attraktivität.

Meine Frage ist, ob es eine Möglichkeit gibt, vorhandene nugget-Bibliotheken in .NET Core zu verwenden? Gibt es eine Möglichkeit, sie zu verpacken, damit sie funktionieren? Wenn nicht, wie kann eine vollständige .NET F/W-Bibliothek in .NET Core konvertiert werden? Muss es komplett neu geschrieben werden?

+0

Sorry die Frage ist zu breit, vor allem die Konvertierung. Führen Sie den .NET Portability Analyzer https://visualstudiogallery.msdn.microsoft.com/1177943e-cfb7-4822-a8a6-e56c7905292b für einen Hinweis aus, aber es kommt auf den Fall an. Einige können mit einer ordentlichen Menge Arbeit portiert werden, andere müssen möglicherweise neu geschrieben werden, um kompatibel zu sein. Es hängt davon ab, wie viel und welche API die Bibliothek verwendet. Am besten ist es, ASP.NET Core mit vollem .NET Framework zu verwenden und bestimmte Bibliotheken langsam mit .NET-kompatiblen zu migrieren oder zu ersetzen. – Tseng

+0

.NET Core kann in diesem Stadium Ihre Anforderungen nicht unterstützen. Bleiben Sie bei .NET Framework und warten Sie, bis die Open Source-Projekte mit der reicheren API migriert werden, die Microsoft in späteren Versionen von .NET Core verfügbar macht. –

+0

@Tseng ok. Ich habe den Portabilitätsanalysator installiert und auf einem Projekt ausgeführt, das ich von githug heruntergeladen habe. es zeigt, dass es 100% passiert. Aber das ist alles, was es sagt - prüft es speziell für .NET Core? Und jetzt, wo es passiert - was ist mein nächster Schritt für die Konvertierung in .NET Core? – developer82

Antwort

0

Sie verfügen über APIs, die mit dem vollständigen .NET Framework erstellt wurden, und möchten diese in .NET Core (CoreFx) kompilieren. Dies wird derzeit von uns nicht manuell durchgeführt. Wenn Sie möchten, müssen Sie PCLs erstellen.

Wenn Sie sich die .NET Core-Dokumentation ansehen, werden Sie feststellen, dass .NET Core klein ist und Laufzeit optimieren. Daher werden alle .NET Framework-Bibliotheken für die Optimierung durch .NET Team zu CoreFx neu kompiliert. Es wird erwartet, dass die Unterstützung für alle .NET Framework-Bibliotheken um Q1, Q2 2017 kompatibel ist, da Sie mehr über sie erfahren können here.

Es gibt eine andere Möglichkeit, Sie können auch .NET Framework-Bibliotheken mit .NET Core verwenden, aber es wird nur Windows-kompatibel sein.

+0

Aber der ganze Punkt von .NET Core ist nicht das volle Framework zu verwenden, nicht wahr? Es ist die volle F/W, die .NET-Anwendungen heute so schwer macht? oder gibt es einen anderen Vorteil, .NET Core mit voller F/W zu verwenden? – developer82

+0

Es wäre besser zu sagen, dass .NET Core eine optimierte Version von .NET Framework ist. .NET Framework enthält viele andere Sub-Frameworks wie WPF, Windows Forms und andere. Sie können nicht alle diese Sub-Frameworks mit .NET Core für jetzt verwenden. Der erste, den Sie verwenden können, ist ASPNET Core. Sie können mehr über das Ökosystem in meinem Blog lesen: http://kjanshair.azurewebsites.net/fundamentals/dotnetcore –

0

[Gibt es] eine Möglichkeit, vorhandene nugget-Bibliotheken in .NET Core zu verwenden?

Ja, solange diese Bibliotheken portabel sind (PCL). Obwohl es möglich ist, dass eine portable Bibliothek APIs verwendet, die nicht von .Net Core unterstützt werden, müssen Sie "imports" in Ihrer project.json verwenden, um solche Bibliotheken zu verwenden.

Für .Net Framework-Bibliotheken ist eine Neukompilierung erforderlich (aber wahrscheinlich nicht ausreichend).

Als Alternative könnten Sie ASP.NET Core für .NET Framework verwenden. Auf diese Weise erhalten Sie einen Teil der Leistungsverbesserungen und können dennoch das gesamte .Net Framework verwenden. Sie verlieren jedoch die Portabilität zu Linux und Mac OS (es sei denn, Sie zählen mono).

Gibt es eine Möglichkeit, [.Net Framework-Bibliotheken] einzubinden, damit sie [auf .Net Core] funktionieren?

Nicht so weit ich weiß.

Wie kann eine vollständige .NET F/W-Bibliothek in .NET Core konvertiert werden? Muss es komplett neu geschrieben werden?

Im Allgemeinen muss es nicht vollständig neu geschrieben werden. Aber Sie müssen Teile davon ändern, die auf .Net Core nicht unterstützt werden.

Obwohl, wenn Sie warten, wird die Situation besser werden, da viele APIs, die ursprünglich auf .Net Core weggelassen wurden, bald zurückkommen werden. Das mag ein Grund dafür sein, warum einige Bibliotheksautoren nicht hetzen, .Net Core zu unterstützen.