可移植类库与库项目的区别

20
我想了解PCL(Portable Class Library)和普通库之间的区别。 PCL使用配置文件来确定可用的平台和功能。两者都可以生成可在不同平台上使用的DLL。对于普通库项目,您也可以设置目标框架(例如.NET 3.5)。Xamarin表示#if编译器指令仅适用于共享项目,这意味着它们不适用于PCL。我认为PCL和库项目非常相似。那么,在处理不同的移动平台时有什么区别呢?

2
类库只针对.NET版本。PCLs则针对多个平台,因此限制更大。它使用所有目标平台中可用的最低公共分母。共享项目基本上只是指向项目的文件链接。如果您选择PCL,则78或259个配置文件适合于针对大多数平台。 - valdetero
那么区别在于类库只针对整个.NET框架,而PCL则针对操作系统和.NET框架的特定功能。您能轻松地将一种项目类型转换为另一种吗? - testing
1
@testing 我还没有找到一种简单的方法来将一个项目从一个转换到另一个。PCL是在多个Xamarin应用程序之间共享代码的理想方式。然而,如果您有依赖项不是PCL,那么您的PCL无法引用它们。这就是共享项目可以帮助解决的问题。它可以引用那些非PCL依赖项。 - Eric Levine
1个回答

21

可移植类库是平台无关的。它们不使用条件编译和非托管代码,也没有内部 UI(UI 是平台依赖的)。这是因为 PCL 应该在所有指定的平台上工作,这些平台被选择为目标。此外,功能的可用性取决于所选目标。

因此,任何目标在 PCL 设置中指定的项目都可以引用 PCL。但是其他类型的库只能被具有相同目标或更高级别的 .Net 项目引用(例如,Silverlight 库可以在 Windows 项目中使用,但反之则不行)。

有关 PCL 的限制和功能的更多信息可以在以下两个链接中找到:

  1. 使用可移植类库共享功能
  2. 使用可移植类库进行跨平台开发

在第一个链接中,您可以了解 PCL 的一般情况。在第二个链接中,了解有关目标和功能的信息。

希望这有所帮助。

编辑:另请参见什么是可移植类库?


PCL和库项目有什么区别? - testing
正如@valdetero所说,标准库针对单个平台,而可移植类库则同时针对多个库。 - Yoh Deadfall
如果标准库可以在多个平台上运行,那不就一样了吗? - testing
1
不是这样的。这是因为PCL可以被任何在PCL设置中指定目标的项目引用。但其他库只能被具有相同目标或更高子集的.NET项目引用(例如,Silverlight库可以在Windows项目中使用,但反之则不行)。 - Yoh Deadfall
我是初学者... 有没有连接到SharePoint或MS-CRM或Project Server或(JSON解析或)Web API调用模板项目的示例,我们可以从中开始? - saber tabatabaee yazdi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接