Як і інші писали, коротше:
спільне
повторне використання проекту на рівні коду (файлу), що забезпечує структуру папок та ресурси
pcl
повторне використання на рівні складання
Чого здебільшого мені бракувало відповідей, - це інформація про зменшені функціональні можливості, доступні в PCL: як приклад, ви маєте обмежені файлові операції (мені бракувало багато функціональності File.IO в кросплатформенному проекті Xamarin).
Більш детально
спільний проект :
+ Може використовувати #if при націлюванні на декілька платформ (наприклад, Xamarin iOS, Android, WinPhone)
+ Усі функціональні можливості рамки, доступні для кожного цільового проекту (хоча повинні бути умовно складені)
o Інтегрується під час компіляції
- Трохи більший розмір отриманих збірок
- Потрібно Visual Studio 2013, оновлення 2 або новішої версії
ПКЛО :
+ генерує загальний вузол
+ може використовуватися з більш старими версіями Visual Studio (попередньо 2013 Update 2)
про динамічно підключається
- lmited функціональності (підмножина всіх проектів , які він в даний час посилається)
Якщо у вас є вибір, я б рекомендував піти на спільний проект, він, як правило, більш гнучкий і потужніший. Якщо ви заздалегідь знаєте свої вимоги і PCL може їх виконати, ви також можете піти цим маршрутом. PCL також забезпечує чіткіше розділення, не дозволяючи писати специфічний для платформи код (що може бути не найкращим вибором для того, щоб в першу чергу ставитись у спільну збірку).
Основна увага в обох - це націлювання на кілька платформ, інакше ви зазвичай використовуєте просто звичайний проект бібліотеки / dll.