Was löst die portable Klassenbibliothek eigentlich?
Ich Frage mich, was macht der PCL tatsächlich lösen? Wenn alle es tut, ist zu begrenzen mich, was Arten sind cross-Plattform, warum dann nicht Microsoft, nur stellen Sie diese als Funktion in ein standard .NET-Bibliothek über die IDE?
Im Grunde kann ich problemlos kompilieren .NET-Bibliothek, die einige POCO-Objekte und Referenz, die DLL in meine Silverlight, WPF und Windows-Store-app, ohne neu kompilieren zu müssen oder irgendwelche Probleme. Ist es schwer, Beispiele für code, der arbeitet in der PCL das würde nicht funktionieren in einem standard .NET-Bibliothek?
Oh, und ich weiß, dass offensichtlich gibt es einige Dinge, die funktionieren würde, in der Norm .NET-Bibliothek, ich bin nicht besorgt darüber, dass... ich denke, meine Frage ist diese:
Gibt es irgendeinen code, kompilieren Sie in einer Portable Class Library, das würde nicht funktionieren correclty wenn das exakt gleiche code war .NET-Bibliothek?
InformationsquelleAutor der Frage michael | 2013-05-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zwei Dinge:
Erste, wenn Ihre Absicht ist, erstellen Sie eine Bibliothek, das funktioniert auf mehreren Plattformen, die Sie nicht wollen, um herauszufinden, auf Laufzeit, dass Sie versehentlich verwendet eine API, die nicht auf allen Plattformen verfügbar (über eine TypeLoadException oder MissingMethodException oder so). Also Portable Class Libraries wird Ihnen nur intellisense für APIs, die unterstützt werden auf allen Plattformen, die Sie sind targeting und erhalten Sie ein build-Fehler für alles, was außerhalb dieses set.
Zweitens, wenn Sie Sie erstellen .NET Framework-Bibliothek, die nur verwendet die APIs, die auf allen Plattformen verfügbar sind, wird die DLL erstellt noch nicht Arbeit auf anderen Plattformen (also Windows Phone und Silverlight) ohne kompilieren Sie es als eine Bibliothek für diese Plattformen. Es klingt wie Sie erwarten, dass es würde, und das ist eine vernünftige Erwartung aber wurde nicht in der Vergangenheit wahr. Portable Class Libraries sind, wie wir sind, machen, dass die Arbeit (und in der Tat ist es so, dass, wenn Sie erstellen Sie eine Klassenbibliothek für Windows Store-apps, und verwenden Sie nur APIs für .NET Framework und WP8, die resultierende binäre würde Arbeit auf diese beiden Plattformen unverändert).
InformationsquelleAutor der Antwort Daniel Plaisted
Ich würde nicht zu viel sorgen über den code selbst, aber versuchen Sie einfach, die folgenden und sehen Sie, warum Portable Class Libraries sind nützlich.
Erhalten Sie die folgende Fehlermeldung:
In sich selbst, ist nur ein Vorgeschmack, wie zu warum Portable Class Libraries sind so wunderbar. Der schwierige Teil ist, zu versuchen sich anzupassen-code, um die Plattform-agnostisch, das klingt einfach, ist aber nicht so einfach wie man denkt. Vertrauen Sie mir, wenn Sie zunächst versuchen, Lesen Sie eine Datei aus einem Ordner und erkennen, dass die PCL-nicht zulassen
FileInfo
Sie werden frustriert sein, aber die Anleitung von Microsoft ist zu abstrahieren, die Plattform-Abhängigkeiten entfernt und injizieren eine Klasse, die eine Schnittstelle implementiert, die tatsächlich kümmert sich um es. In der Tat, hier ist ein netter Artikel.Andere nützliche Artikel, um über geht ein bisschen über das Innenleben der Weise PCLs eingerichtet sind. Dieser Artikel wird Ihnen helfen, warum PCLs sind in der Lage, mehrere Zielplattformen. https://www.simple-talk.com/blogs/2013/04/19/inside-portable-class-libraries/
InformationsquelleAutor der Antwort m-y
Habe ich eine einfache youtube-video über Was ist die portable class library ist , kann man es von hier aus http://www.youtube.com/watch?v=DcBfjdDHlxo
Aber lassen Sie mich die Antwort in mehr detail hier.Der springende Punkt bei der Erstellung einer Klasse-Bibliothek-Projekt ist die Wiederverwendbarkeit. Jetzt wollen wir diese Wiederverwendbarkeit nicht nur innerhalb eines .NET-Anwendung, nicht quer .NET-Anwendungen, sondern über verschiedene Arten.NET-Anwendungen. Jetzt verschiedene Arten von .NET-Anwendung, WPF -, Windows -, Silber -, Licht -, Windows phone, etc.
Nun jedes dieser Anwendung Typen unterschiedlich sind, haben etwas anders .NET framework.
Beispielsweise in Silber-Licht-Anwendung, wenn Sie versuchen, auf ein einfaches "Klasse-Projekt" würden Sie am Ende mit einem unterhalb der Fehlermeldung. Das ist, wo portable class libraries sind nützlich. Durch die Schaffung einer tragbaren Klasse, die wir verweisen können es in jeder Art von .NET Projekt-Typen.
InformationsquelleAutor der Antwort Shivprasad Koirala
Schließlich wird es zu lösen eine MENGE! (Wie Java, aber in diesem Jahrhundert)
Grundsätzlich denke ich Nicht , ist nicht die andere Weise Runde ?
Aber ich denke, alle Respekt, man könnte eigentlich fehlt der Punkt
Denken Sie über kopieren/einfügen von code und Projekt-Klonen , die Verknüpfung von code , der bedingten compiler-Direktiven( auch T4-Vorlagen?) und das Ergebnis ist Referenz
DLL Hell
und unnötige Komplexität, boilerplate , Ausführlichkeit ( Nicht sehr elegant oder ?)Sind Sie nicht Problemumgehungen für binäre Inkompatibilität ?
Seine sehr früh, Aber ich denke, seine eine wunderbare Richtung, vor allem, wenn Sie sehen, Xamarin und Mono-arbeiten, Unterstützung von pcl (das tun Sie schon teilweise) ,ich denke, das ist die einzige Sache, die Sie sparen könnten alle, die aus Html-und Javascript-frenzy oder Code-Generatoren. (lang Lebe TypeSafe!)
PCL könnte auch frei die c# - Armee aus dem Windows-Kisten
(aber das ist nur meine Meinung)
InformationsquelleAutor der Antwort Dan
Gibt es einige API-Unterschiede in der Portable Class Library betrifft .NET Framework 4, wenn Sie die Entwicklung in Visual Studio 2012. In Erster Linie betrifft dies ein paar Eigenschaften und Methoden in der
System.Net
undSystem.Xml
namespaces. Für detaillierte Informationen, siehe diese MSDN-Seite.InformationsquelleAutor der Antwort Anders Gustafsson