Wie werden Windows Runtime-Klassen in .NET Core-Bibliotheken verwendet?

8

Ich entwickle eine Bibliothek, die mit WPF und Windows 10 verwendet werden kann. Ich stoße auf Probleme, sie auf letzterem kompilieren zu lassen. Hier ist ein Teil des Codes:

project.json

%Vor%

Dependency.cs

%Vor%

Während dies für net46 kompiliert wird (das ist das traditionelle .NET Framework), habe ich Probleme, es für netcore50 (das von Windows 10-Apps verwendet werden kann) zu verwenden. Aus irgendeinem Grund sieht es so aus, dass Typen wie DependencyProperty oder DependencyObject in dieser Konfiguration nicht enthalten sind.

Gibt es ein netcore50 -kompatibles NuGet-Paket, das ich installieren kann, das diese Typen enthält, damit ich sie aus meiner Bibliothek verwenden kann?

Danke für Ihre Hilfe.

BEARBEITEN: Ich habe gerade DependencyProperty in VS eingegeben und drücke F12. Es scheint, dass der Typ in der Windows.Foundation.UniversalApiContract Assembly lebt, aber auf NuGet gibt es kein solches Paket.

    
James Ko 08.02.2016, 19:08
quelle

2 Antworten

5

Endlich löste ich das Problem alleine! (Wenn Sie nach einer schnellen Antwort suchen, können Sie nach unten scrollen.)

Ich erinnerte mich durch Zufall daran, dass der .NET Core GitHub Repo eine Reihe von WinRT-spezifischen Bibliotheken wie System.Runtime.WindowsRuntime hatte. Also ging ich hinüber, um zu sehen, wie sie es gemacht haben.

Es scheint, dass sie eine Art intern gehosteten "targeting pack" , das eine einzelne Windows.winmd -Datei enthält (die alle Typen in der Windows-Laufzeit enthält), um diese Wirkung zu erzielen. Leider wird das Paket auf einem privaten NuGet-Feed gehostet, der nur für das .NET Core-Team gedacht ist. Daher kann ich es nicht verwenden.

Ich habe ein Problem hierüber auf dem CoreFX-Repo hier geklärt, damit ich Microsoft um eine Petition bitten kann offizielle Lösung für dieses Problem. In der Zwischenzeit habe ich die Dinge selbst in die Hand genommen. Ich habe alle verschiedenen Versionen von Windows.winmd auf meinem Laptop gefunden und sie als NuGet-Pakete hochgeladen. Hier sind sie:

Sie können sie wie folgt verwenden:

%Vor%

Danach können Sie etwas wie folgt schreiben:

%Vor%

und es wird einfach funktionieren.

    
James Ko 10.02.2016, 00:37
quelle
0

WPF Ist weder mit .net Core kompatibel, noch sind W10 Universal Apps, meines Wissens nur Konsolen-Apps und Web-Apps, derzeit mit .net core kompatibel, sollten Sie immer noch die neue Codebasis mit der neuen verwenden können Projekt-System, aber Sie müssen .net-Core aus Ihrer Konfiguration entfernen, um zu kompilieren Wenn Sie .net core mit linux mit einer Desktop-App verwenden wollen, müssen Sie einfach warten, oder verwenden Sie ein kompatibles Fenster-App-Framework (falls vorhanden), sollten Sie in der Lage sein, ein plattformübergreifendes Framework um html / js wie Electron oder Cordova (nicht sicher, ob es ein Desktop-App-Framework mit Cordova gibt)

    
Chris McGrath 09.02.2016 07:23
quelle