2015-02-26 7 views
17

Я хочу знать разницу между PCL (Portable Class Library) и обычной библиотекой.Portable Class Library vs. library project

PCL использует профили, с помощью которых можно определить, какие платформы и функции доступны. Оба могут генерировать DLL, которые могут использоваться на разных платформах. Для обычного проекта библиотеки вы также можете установить целевую структуру (например, .NET 3.5). Xamarin говорит, что директивы компилятора #if подходят только для общих проектов, что означает, что они не используются в PCL. Я думаю, что PCL и проект библиотеки очень похожи.

Итак, каковы различия при работе с различными мобильными платформами?

+2

библиотеки классов только целевой версии .NET. PCL нацелены на несколько платформ, поэтому они еще более ограничивают. Он использует наименьший общий знаменатель, доступный во всех целевых платформах. Общие проекты - это, в основном, ссылки на файлы обратно к проекту. Если вы идете с PCL, профили 78 или 259 хороши для таргетинга на большинство платформ. – valdetero

+0

Значит, разница в том, что библиотеки классов предназначены только для целевой среды .NET и специфических функций PCL в зависимости от операционной системы и платформы .NET? Можете ли вы легко преобразовать один тип проекта в другой? – testing

+1

@testing Я не нашел простой способ конвертировать проект из одного в другой. PCL - идеальный способ совместного использования кода между несколькими приложениями Xamarin. Однако, если у вас есть зависимости, которые не являются также PCL, ваш PCL не может ссылаться на них. Это может помочь общий проект. Он может ссылаться на эти зависимости, отличные от PCL. – elevine

ответ

19

Портативные библиотеки классов не зависят от платформы. Они не используют условную компиляцию и неуправляемый код, у них нет интерфейса (UI зависит от платформы). Это связано с тем, что PCL должен работать на всех указанных платформах, выбранных в качестве цели. Кроме того, доступность функций зависит от выбранных целей.

Таким образом, на PCL может ссылаться любой проект, цель которого указана в настройках PCL. Но на библиотеки других типов можно ссылаться только на проекты, которые имеют одну и ту же цель или верхние подмножества .Net (например, библиотеки Silverlight могут использоваться в проектах Windows, но не наоборот).

Подробнее об ограничениях и возможностях PCL можно найти по двум ссылкам ниже:

  1. Share functionality using Portable Class Libraries
  2. Cross-Platform Development with the Portable Class Library

На первой ссылке вы можете прочитать о том, что PCL в целом. А на втором - информация о целях и функциях.

Надеюсь, это поможет.

EDIT: Смотрите также What is a Portable Class Library?

+0

И в чем разница между PCL и проектом библиотеки? – testing

+0

Поскольку @valdetero говорит, что стандартная библиотека нацелена на одну платформу, а переносная библиотека классов одновременно нацелена на несколько библиотек. –

+0

Что делать, если стандартная библиотека работает на нескольких платформах, не будет ли она одинаковой? – testing

Смежные вопросы