2016-04-16 18 views
2

Ich habe eine einfache Datenstruktur zu NuGet veröffentlicht, die halb populär ist. Es verwendet keine speziellen Windows-APIs, daher würde ich erwarten, dass es bereits mit UWP kompatibel ist.Wie kann ich eine vorhandene C# -Bibliothek UWP-kompatibel machen?

jedoch, wenn Menschen versuchen, einen Verweis durch NuGet hinzuzufügen, sehen sie

< Projekt> mit UAP nicht kompatibel ist, Version = v10.0.
Einige Pakete sind nicht kompatibel mit UAP, Version = v10.0.

Was muss ich tun, um mein Projekt kompatibel mit UWP(während noch halten die Kompatibilität mit nicht-UWP Projekte, einschließlich .NET 2.0-Unterstützung) zu machen? Ich habe online Antworten gelesen von "fügen Sie diese .json Datei" zu "Sie müssen ein völlig separates Projekt" pflegen!

+0

Sie wollen also nur eine dll \ Projekt haben, die mit allen Zielrahmen kompatibel ist? Denn wenn nicht, können Sie einfach mehrere DLLs auf verschiedene Frameworks in einem nugget-Paket setzen, und die richtige wird ausgewählt, wenn der Benutzer Ihr Paket installiert. – Evk

+0

@Evk: Kann ich das mit verschiedenen Projektkonfigurationen machen? Oder brauche ich separate Projekte? In jedem Fall, wie mache ich das? Ich habe noch nie etwas mit UWP gemacht und versuche nach Tutorials zum Schreiben von UWP-kompatiblen Bibliotheken zu suchen, es erscheint absurd unnötig kompliziert. –

+0

Ich bevorzuge Quelltext-Sharing, weil Dinge wie PCL zu viele Einschränkungen haben. Sie erstellen einfach ein UWP-Bibliotheksprojekt in Visual Studio, fügen alle Dateien aus Ihrem .NET-Projekt als Links hinzu (so haben Sie eine einzelne Codebasis) und kompilieren dieses UWP-Projekt. Natürlich wird es nicht so einfach sein, in diesem Fall können Sie bedingte Kompilierungssymbole verwenden (#if WINDOWS_UWP // UWP-spezifischer Code #else // Nicht-UWP-Code). Sie können auch die Shared Project-Funktion von Visual Studio verwenden. Es ist nah daran, Dateien als Links hinzuzufügen, wie oben beschrieben, aber bequemer. Dann packst du beide in ein Nugget-Paket. – Evk

Antwort

3

mehrere Ansätze gerade jetzt,

  1. schreiben PCL, die UWP-Kompatibilität ermöglicht.
  2. Schreiben Sie eine UWP-Klassenbibliothek, die auf die allgemeinen Quelldateien verweist.
  3. Migrieren Sie die Bibliothek zu .NET Core.

Ich benutze die letzte für meine Open-Source-Bibliothek und die Blog-Post deckt die Details,

https://blog.lextudio.com/2016/03/how-to-port-snmp-library-to-net-core/

+0

Behalten diese Optionen die Kompatibilität mit Nicht-UWP-Projekten? Ich denke, zumindest # 2 bricht es. –

+0

@ BlueRaja-DannyPflughoeft Alle Ansätze, die ich aufgelistet habe, erfordern das Erstellen neuer Klassenbibliotheksprojekte. # 1 und # 3 ermöglichen die Verwendung der neuen Klassenbibliothek für UWP- und Nicht-UWP-Projekte, während # 2 erfordert, dass Sie die alte Klassenbibliothek für Nicht-UWP-Projekte verwenden, während die neue für UWP-Projekte verwendet wird. –

+0

Allerdings wird # 3 meines Wissens nicht mit .net 2 funktionieren. Nicht sicher über PCL. – Liero

Verwandte Themen