为啥我应该在 Xamarin 中使用可移植类库?

Posted

技术标签:

【中文标题】为啥我应该在 Xamarin 中使用可移植类库?【英文标题】:Why should I use portable class libraries with Xamarin?为什么我应该在 Xamarin 中使用可移植类库? 【发布时间】:2014-11-04 16:06:43 【问题描述】:

我目前正在为我的公司评估 Xamarin,目标是开发 ios,然后可能是 android 应用程序。 (Windows Phone 或 Windows 商店应用程序对我们来说不是问题)。我们正在考虑将共享功能放入一个公共库中,根据 Xamarin Docs,PCL 是可行的方法。但是,为什么我不能只创建普通的 .net 类库并引用它们呢?

Mono 是 Xamarin 的基础,并且在大多数领域都有相当成熟的 .net 框架实现,它应该在 Android 和 iOS 上都可用,因为它是 Xamarin 的一部分。 我是否遗漏了一些重要的事实,或者仅当我还想开发 Windows 应用商店应用程序时才需要 PCL?

【问题讨论】:

【参考方案1】:

常规 .NET 库支持单一目标框架。 Xamarin iOS 使用的 .NET 框架与 Xamarin Android 或 Windows Phone 等使用的不同。它们都使用“完整”框架的不同子集和变体。因此,针对一种框架风格编译的 dll 将无法用于不同的目标。

PCL 允许您针对多个框架并使用它们都支持的功能的交集来避免这种情况。

【讨论】:

谢谢你,这让它更清楚了。我不知道 Xamarin.iOS 和 Xamarin.Android 之间的 BCL 不同。【参考方案2】:

PCL 是 Xamarin 中特定于平台的项目之间共享代码的两种方式之一(另一种是共享项目)。它们允许您以多个平台为目标,但您最终会使用一组较小的程序集。

【讨论】:

查看 Jason Smith(Xamarin.Forms 负责人)最近的推文和后续回复:twitter.com/jassmith87/status/529785150842748930

以上是关于为啥我应该在 Xamarin 中使用可移植类库?的主要内容,如果未能解决你的问题,请参考以下文章

可移植类库配置文件 78 缺少属性相关的方法/属性

如何根据所选配置将项目构建为可移植类库或普通类库?

StreamReader 和可移植类库

在 Xamarin Forms 中找不到可移植类库文件夹

Prism 模块引用可移植类库

使用可移植类库作为 COM 接口