Krótko mówiąc, jak inni już pisali:
wspólne korzystanie z projektu
na poziomie kodu (pliku), co pozwala również na strukturę folderów i zasobów
pcl
Ponowne użycie na poziomie zestawu
Najbardziej brakowało mi tutaj odpowiedzi na temat ograniczonej funkcjonalności dostępnej w PCL: jako przykład masz ograniczone operacje na plikach (brakowało mi wielu funkcjonalności File.IO w wieloplatformowym projekcie Xamarin).
Bardziej szczegółowo
współdzielony projekt :
+ Można użyć #if podczas atakowania na wiele platform (np. Xamarin iOS, Android, WinPhone)
+ Wszystkie funkcje frameworku dostępne dla każdego projektu docelowego (choć muszą być kompilowane warunkowo)
o Integruje się w czasie kompilacji
- Nieco większy rozmiar wynikowych zestawów
- Wymaga Visual Studio 2013 Update 2 lub nowszej
pcl :
+ generuje wspólny zestaw
+ nadaje się do użycia ze starszymi wersjami Visual Studio (wersja 2 przed 2013 r.)
o dynamicznie połączony
- ograniczona funkcjonalność (podzbiór wszystkich projektów, do których się odwołuje)
Jeśli masz wybór, polecam pójście na wspólny projekt, jest on na ogół bardziej elastyczny i bardziej wydajny. Jeśli znasz swoje wymagania z wyprzedzeniem, a PCL może je spełnić, możesz również pójść tą drogą. PCL wymusza także wyraźniejszą separację, nie pozwalając na pisanie kodu specyficznego dla platformy (co może nie być dobrym wyborem do umieszczenia we wspólnym zestawie).
Głównym celem obu jest, gdy kierujesz reklamy na wiele platform, w przeciwnym razie zwykle używałbyś zwykłego projektu biblioteki / biblioteki dll.