信息
您所需的主题如下所示。但此主题未包含在此库中。

使用可移植类库共享功能

2014/6/18

适用于: Windows Phone 8 和 Windows Phone Silverlight 8.1 | Windows 8

本主题介绍了什么是可移植类库和如何使用它在面向 Windows Phone 8 和 Windows 8 的应用之间共享代码。

本主题包括以下部分。

从 .NET Framework 4 起已开始提供可移植类库。您可以使用它们创建面向多个平台的可移植程序集,包括 Windows 7、Windows 8、Windows Phone、Silverlight 和 Xbox 360,如下图所示。可移植类库支持面向所选平台的 .NET 程序集的子集。您可以使用项目模板随附的 Visual Studio 2012 专业版和更高的版本创建可移植类库。 通过在要支持的平台间共享功能,可以有效地降低时间和成本。

Alignment_Concept_PCLGeneric

您可以使用可移植类库在 Windows Phone 8 和 Windows 8 的应用之间共享功能。请注意 Visual Studio 2012 的学习版不包括可移植类库项目模板。此模板仅在 Visual Studio 2012 专业版或更高版本中可用。下面的关系图演示两个应用如何共享可移植类库。要引用可移植类库,在解决方案管理器中,选择您的项目,然后选择“添加引用”。指向可移植类库的二进制或可移植类库项目。

Alignment_Concept_PCLWin8WP8

在您为 Windows Phone 8 和 Windows 8 创建应用时,您应该标识可移植代码。将此代码放置在可移植类库中并在两个应用间共享可移植库。可移植代码具有下列特征:

  • 托管的(C# 或 VB)代码 可移植类库是 .NET 概念并且仅支持托管代码。由于 Windows Phone 8 和 Windows 8 共享相同的 .NET 引擎,您编写的大部分托管代码,尤其是应用逻辑,都可能能够进行移植。

  • 不要使用条件编译 可移植类库是针对您想要面向的平台的一组可移植 .NET 程序集编译的。如果您正在生成面向Windows Phone 8 和 Windows 8 的应用,这意味者这些平台上存在一组可移植的 .NET 程序集。在为不同的平台或配置编译代码时,条件编译指令旨在启用不同的代码路径。这不是可移植类库的目的。如果您需要为 Windows Phone 8 实现功能并且要在 Windows 8 中采用不同的方式实现它,您不能将两个代码路径包含在可移植类库中。而是,您应该抽取出平台相关的代码并且只分享可移植的、独立于平台的代码。

  • 不要使用 Windows 运行时 API Windows 运行时 API 无法移植并且无法用于可移植类。在 Windows Phone 8 和 Windows 8 上受支持的 Windows 运行时 API 中存在重叠。但是,二进制兼容性不受支持。您的代码需要在每个平台上进行编译,因此不适用于可移植类库。在这种情况下,您仍应该将 Windows 运行时 API 的使用抽取到未在可移植类库中共享的类或对象。

  • 不要使用 UI 构造 尽管用于 Windows Phone 8 和 Windows 8 的 XAML 看起来相同并且大部分的 UI 控件都具有相同的名称,但是此代码不是可移植的。您的代码需要在每个平台上进行编译,因此不适合放置在可移植类库中。

使用模型视图查看模型 (MVVM) 模式和使用 .NET API 创建面向 Windows Phone 8 和 Windows 8 的应用时,您可以在可移植类库中共享大量的代码。可以将 ViewModel 和模型设计为可移植并且您应该将它们放置在可移植类库中。应用的视图和启动代码通常是平台特定的并且应该在 Windows Phone 8 和 Windows 8 应用项目中进行实现。下图对此予以说明。

Alignment_Concept_PCL_MVVM

如果您的 ViewModel 需要调用平台特定的代码,您应该将该功能抽取到平台相关的接口中并在可移植类库中使用该接口。然后,可以在每个应用项目中使用平台特定的方法实现接口。因为可移植类只需编译一次,然后即可用于多个平台中,这是非常强大的代码共享方法并且可允许进行二进制共享。

显示: