Ich habe mir die neuen Funktionen für Visual Studio 2015 und Shared Project angesehen, aber ich verstehe nicht, wie sich die Verwendung einer Klassenbibliothek oder einer tragbaren Klassenbibliothek unterscheidet. Kann jemand erklären?
Bearbeiten: Freigegebenes Projekt ist eine neue Funktion in Visual Studio 2015 und unterscheidet sich von einer tragbaren Klassenbibliothek. Ich verstehe, was eine tragbare Klassenbibliothek ist. Ich versuche zu verstehen, wie sich ein freigegebenes Projekt von einer Klassenbibliothek unterscheidet. Siehe Link unten.
c#
.net
visual-studio-2015
Indy411
quelle
quelle
Antworten:
Der Unterschied zwischen einem gemeinsam genutzten Projekt und einer Klassenbibliothek besteht darin, dass letztere kompiliert wird und die Einheit der Wiederverwendung die Assembly ist.
Während bei ersteren die Wiederverwendungseinheit der Quellcode ist und der gemeinsam genutzte Code in jede Assembly integriert ist, die auf das gemeinsam genutzte Projekt verweist.
Dies kann nützlich sein, wenn Sie separate Assemblys erstellen möchten, die auf bestimmte Plattformen abzielen , aber dennoch Code enthalten, der gemeinsam genutzt werden soll.
Siehe auch hier :
In früheren Versionen von Visual Studio 1 konnten Sie den Quellcode zwischen Projekten freigeben, indem Sie Hinzufügen -> Vorhandenes Element hinzufügen und dann Verknüpfung auswählen. Dies war jedoch etwas umständlich und jede einzelne Quelldatei musste einzeln ausgewählt werden. Mit der Unterstützung mehrerer unterschiedlicher Plattformen (iOS, Android usw.) beschlossen sie, die gemeinsame Nutzung von Quellen zwischen Projekten zu vereinfachen, indem sie das Konzept der gemeinsam genutzten Projekte hinzufügten.
1 Diese Frage und meine Antwort (bis jetzt) legen nahe, dass Shared Projects eine neue Funktion in Visual Studio 2015 war. Tatsächlich haben sie ihr Debüt in Visual Studio 2013 Update 2 gegeben
quelle
Ich habe weitere Informationen in diesem Blog gefunden .
quelle
Kurz Unterschiede sind
1) PCL hat keinen vollständigen Zugriff auf .NET Framework, wie dies bei SharedProject der Fall ist.
2) #ifdef für plattformspezifischen Code - Sie können nicht in PCL schreiben ( die Option #ifdef steht Ihnen in einer PCL nicht zur Verfügung, da sie separat als eigene DLL kompiliert wird, also zur Kompilierungszeit (wenn #ifdef ausgewertet wird). Es weiß nicht, zu welcher Plattform es gehören wird. ) Wo können Sie als gemeinsames Projekt.
3) Plattformspezifischer Code wird mit Inversion Of Control in PCL erreicht, wobei Sie mit # ifdef-Anweisungen dasselbe in Shared Project erreichen können.
Ein ausgezeichneter Artikel, der die Unterschiede zwischen PCL und Shared Project veranschaulicht, finden Sie unter folgendem Link
http://hotkrossbits.com/2015/05/03/xamarin-forms-pcl-vs-shared-project/
quelle
Wie andere bereits geschrieben haben, kurz gesagt:
Wiederverwendung von gemeinsam genutzten Projekten auf Code- (Datei-) Ebene, wobei auch Ordnerstruktur und Ressourcen berücksichtigt werden
pcl
Wiederverwendung auf Baugruppenebene
Was mir hier in den Antworten am meisten gefehlt hat, sind die Informationen zu reduzierten Funktionen, die in einer PCL verfügbar sind: Als Beispiel haben Sie eingeschränkte Dateivorgänge (mir fehlte in einem plattformübergreifenden Xamarin-Projekt viel File.IO-Funktionalität).
Im Detail
freigegebenes Projekt :
+ Kann #if verwenden, wenn auf mehrere Plattformen (z. B. Xamarin iOS, Android, WinPhone) abgezielt wird.
+ Alle für jedes Zielprojekt verfügbaren Framework-Funktionen (müssen jedoch bedingt kompiliert werden).
O Integriert zur Kompilierungszeit
- Etwas größer der resultierenden Assemblys
- Benötigt Visual Studio 2013 Update 2 oder höher
pcl :
+ erzeugt ein freigegebene Assembly
+ verwendbar mit älteren Versionen von Visual Studio (pre-2013 Update 2)
o dynamisch gelinkt
- lmited Funktionalität (Teilmenge aller Projekte durch verwiesen wird)
Wenn Sie die Wahl haben, würde ich empfehlen, sich für ein gemeinsames Projekt zu entscheiden. Es ist im Allgemeinen flexibler und leistungsfähiger. Wenn Sie Ihre Anforderungen im Voraus kennen und eine PCL diese erfüllen kann, können Sie auch diesen Weg gehen. PCL erzwingt auch eine klarere Trennung, indem es Ihnen nicht erlaubt, plattformspezifischen Code zu schreiben (was möglicherweise keine gute Wahl ist, um überhaupt in eine gemeinsam genutzte Assembly eingefügt zu werden).
Das Hauptaugenmerk von beiden liegt auf der Ausrichtung auf mehrere Plattformen, andernfalls würden Sie normalerweise nur ein gewöhnliches Bibliotheks- / DLL-Projekt verwenden.
quelle
Aus dem Buch VS 2015 kurz und bündig
Mit freigegebenen Projekten können Code, Assets und Ressourcen für mehrere Projekttypen freigegeben werden. Insbesondere können die folgenden Projekttypen auf gemeinsam genutzte Projekte verweisen und diese verwenden:
Hinweis: - Sowohl gemeinsam genutzte Projekte als auch Portable Class Libraries (PCL) ermöglichen die gemeinsame Nutzung von Code, XAML-Ressourcen und Assets. Natürlich gibt es einige Unterschiede, die wie folgt zusammengefasst werden können.
quelle
Klassenbibliothek ist gemeinsam genutzter kompilierter Code.
Freigegebenes Projekt ist gemeinsam genutzter Quellcode.
quelle