(相关参阅)可移植类库 – http://msdn.microsoft.com/zh-cn/library/gg597391(v=vs.100).aspx
.NET Framework 4.5
Visual Studio 2012 中的 可移植类库 项目支持 .NET Framework 应用的跨平台开发。
使用此项目编写和生成的可移植程序集,无须在多个平台的修改即可运行,例如 Windows 7,Windows 8,Silverlight ,Windows Phone 和 Xbox 360。 例如,可以创建在桌面应用程序、Windows 应用商店应用程序和移动应用程序中包含共享业务逻辑的类,然后从不同类型的应用程序中引用这些类。
可移植类库项目支持 .NET Framework、Silverlight、适用于 Windows 应用商店应用的 .NET、Windows Phone 和 Xbox 360 中的部分程序集,并提供可用于生成不在这些平台上进行修改也可运行的程序集的 Visual Studio 模板。 如果没有使用可移植类库项目,您必须先指定单个应用程序类型,然后手动修改其他应用程序类型的类库。 可移植类库 项目,可以通过生成在不同设备上的应用程序之间共享的可移植程序集来减少开发和测试代码的时间和费用。
说明 |
---|
如果您使用的是 Visual Studio 2013,则可用的选项和菜单可能与本文中的描述有所不同。 |
以下各节对 可移植类库 的功能进行了介绍:
- 先决条件
- 目标平台
- 支持的功能
- 受支持的类型和成员
- 平台抽象
- 支持模型-视图-视图模型 (MVVM) 模式
- 创建可移植类库项目。
- 选择目标平台
- 使用可移植类库
平台 | 版本 |
---|---|
.NET Framework | .NET Framework 4 和更高版本.NET Framework 4.0.3 和更高版本.NET Framework 4.5 |
Silverlight | Silverlight 4 和更高版本(默认选中)。Silverlight 5 |
Windows Phone | Windows Phone 7 和更高版本(默认选中)Windows Phone 7.5 和更高版本Windows Phone 8
重要事项
Windows Phone SDK 8.0 for the Windows Phone 8 option. ‘>如果选择 Windows Phone 8,则必须安装 Windows Phone SDK 8.0。
|
适用于 Windows 应用商店应用的 .NET (*) | 不可用 |
Xbox 360 | 不可用 |
该表标识默认情况下处于选中状态的四个平台或版本。 Project Properties dialog box, as shown in the section Selecting the Platforms to Target.’>如 选择要面向的平台 所示,可以通过使用“项目属性”对话框来更改这些默认平台。
功能 | .NET Framework | Windows 应用商店 | Silverlight | Windows Phone | Xbox 360 |
---|---|---|---|---|---|
核心 | √ | √ | √ | √ | √ |
LINQ | √ | √ | √ | √ | |
IQueryable | √ | √ | √ | 7.5 和更高版本 | |
动态关键字 | 仅限 4.5 | √ | √ | ||
Managed Extensibility Framework (MEF) | √ | √ | √ | ||
网络类库 (NCL) | √ | √ | √ | √ | |
序列化 | √ | √ | √ | √ | |
Windows Communication Foundation (WCF) | √ | √ | √ | √ | |
模型视图视图模型 (MVVM) | 仅限 4.5 | √ | √ | √ | |
数据批注 | 仅 4.0.3 和 4.5 | √ | √ | ||
XLINQ | 仅 4.0.3 和 4.5 | √ | √ | √ | √ |
System.Numerics | √ | √ | √ |
- 它们必须在所选的目标平台之间共享。
- 必须行为与平台上的这些行为类似。
- 它们不得是要弃用的候选项。
- 它们必须在可移植环境中才有意义,特别是在支持成员时是不可移植时。
例如,可移植类库项目不包含任何 UI 相关类型或成员,原因是不同设备的 UI 的行为不同。 如果您的目标是在 可移植类库 引入之前发布的平台(如 Xbox、.NET Framework 4 和Windows Phone 7),那么您可能会遇到限制。
.NET Framework Class Library.’>可查找 可移植类库 支持的成员,在 .NET Framework Class Library(.NET Framework 类库)的参考主题中查找。 在类的成员表中,受支持的成员旁边会显示以下可移植类库图标。
Chars property in the String class is supported in the Portable Class Library.’>例如,下面的图像显示,在 String 类中的 Chars 属性在 可移植类库 中支持。
Version Information section of a reference topic for a note indicating that a type or member is supported in the Portable Class Library project, as shown below.’>按如下显示,还可以查看参考主题的“版本信息”节,了解指示在可移植类库项目中受支持的类型或成员的注释。
using System; namespace ExamplePortableLibrary { public abstract class ExampleLocalSettings { public abstract void SetLocalValue(string name, object value); public static ExampleLocalSettings Instance { get; set; } } }
在 可移植类库 项目中,可以按以下方式使用。
ExampleLocalSettings.Instance.SetLocalValue("ExampleSetting", "New value to add");
在您的 Silverlight 项目中,添加引用到可移植的程序集,然后创建实现特定于 Silverlight 环境的本地设置操作的子类。 ExampleLocalSettings class.’>下面的示例演示 ExampleLocalSettings 类的 Silverlight 实现。
using System; using System.IO.IsolatedStorage; using ExamplePortableLibrary; namespace SilverlightApplication1 { class SilverlightImplementation : ExampleLocalSettings { public override void SetLocalValue(string name, object value) { IsolatedStorageSettings.ApplicationSettings.Add(name, value); } } }
在您的 Windows 应用商店 应用程序中,添加引用到可移植的程序集,然后创建实现特定于 Windows 应用商店 应用程序的本地设置操作的子类。 ExampleLocalSettings class for a Windows Store app.’>下面的示例演示 Windows 应用商店 应用程序的 ExampleLocalSettings 类的实现。
using System; using Windows.Storage; using ExamplePortableLibrary; namespace App1 { class AppImplementation : ExampleLocalSettings { public override void SetLocalValue(string name, object value) { ApplicationData.Current.LocalSettings.Values[name] = value; } } }
Instance property.’>在 Silverlight 应用程序和 Windows 应用商店 应用程序两个中,必须初始化子类的特定实现并将其设置为 Instance 属性。 通常,您在该应用程序开始时创建此示例。 以下示例显示如何初始化 Silverlight 实现。
ExampleLocalSettings.Instance = new SilverlightImplementation();
以下示例显示如何为 Windows 应用商店 应用程序初始化实现。
ExampleLocalSettings.Instance = new AppImplementation();
- System.Collections.ObjectModel.ObservableCollection<T>
- System.Collections.ObjectModel.ReadOnlyObservableCollection<T>
- System.Collections.Specialized.INotifyCollectionChanged
- System.Collections.Specialized.NotifyCollectionChangedAction
- System.Collections.Specialized.NotifyCollectionChangedEventArgs
- System.Collections.Specialized.NotifyCollectionChangedEventHandler
- System.ComponentModel.DataErrorsChangedEventArgs
- System.ComponentModel.INotifyDataErrorInfo
- System.ComponentModel.INotifyPropertyChanged
- System.Windows.Input.ICommand
Using Portable Class Library with Model-View-View Model.’>有关如何在 可移植类库 项目中实现 MVVM 模式的更多信息,请参见 将可移植类库与模型-视图-视图模型配合使用。
- .NET Framework 4.5
- Silverlight 4 及更新版本
- Windows Phone 7 及更高版本
- 适用于 Windows 应用商店应用的 .NET
该项目只引用受这些平台支持的程序集。 Solution Explorer, open the shortcut menu for the Portable Class Library project, and then choose Properties.’>若要更改目标平台,则在“解决方案资源管理器”中,打开 可移植类库 项目的快捷菜单,然后选择“属性”。
Library tab specifies the platforms that are currently targeted.’>在项目属性页上,“库”选项卡指定当前面向的平台。
Change button, and then select the appropriate check boxes.’>若要添加或移除目标平台,请选择“更改” 按钮,然后选择相应的复选框。
更改目标平台时,该项目中可用的程序集会发生更改以匹配您所选平台支持的程序集。 如果您的项目引用的程序集不受某个所选平台支持,必须移除对相应程序集的引用或更改目标平台。
部署 .NET Framework 应用程序
部署引用 可移植类库 程序集的 .NET Framework 应用程序时,必须在正确版本的 .NET Framework 上指定一个依赖项。 通过指定此依赖项,可确保与您的应用程序一起安装所需的版本。 update, Update 4.0.3 for the .NET Framework 4, or the .NET Framework 4.5 installed.’>如果面向的是 .NET Framework 4 或更高版本,则必须已安装含 update(更新)的 .NET Framework 4、.NET Framework 4 的更新 4.0.3 或 .NET Framework 4.5。
- Solution Explorer, choose the project node for the project you want to publish. (This is the project that references the Portable Class Library project.) On the menu bar, choose Project, Properties, and then choose the Publish tab.’>若要使用 ClickOnce 部署创建依赖项,请在“解决方案资源管理器”中,选择您要发布的项目对应的项目节点。(这是引用可移植类库项目的项目。)在菜单栏上,依次选择“项目”、“属性”,然后选择“发布”选项卡。 Publish page, choose Prerequisites.’>在“发布”页上,选择“系统必备”。 选择所需 .NET framework 版本(或 .NET framework 4 更新)作为系统必备组件。
- Solution Explorer, choose the setup project.’>若要创建安装项目的依赖项,请在“解决方案资源管理器”中,选择此安装项目。 Project, Properties, Prerequisites.’>在菜单栏上,依次选择“项目”、“属性”、“系统必备组件”。 选择所需 .NET Framework 版本作为系统必备组件。
.NET Framework Deployment Guide for Developers.’>有关部署 .NET Framework 应用程序的更多信息,请参见 .NET Framework 部署指南(针对开发人员)。
部署基于 Silverlight 的应用程序
部署引用 可移植类库 程序集的基于 Silverlight 的应用程序时,您必须确保该应用程序所需的最低运行时版本匹配其目标版本。 如果面向的是 Silverlight 4,则版本必须是 4.0.60129.0 或更高版本。 <param name=”minRuntimeVersion” value=”4.0.60129.0″ /> in the webpage that hosts the Silverlight-based app, as follows:’>通过在承载基于 Silverlight 的应用程序的网页中包括,可设置 <param name=”minRuntimeVersion” value=”4.0.60129.0″ /> 参数值。
<div id="silverlightControlHost"> <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> <param name="source" value="ClientBin/SilverlightApplication.xap"/> <param name="onError" value="onSilverlightError" /> <param name="background" value="white" /> <param name="minRuntimeVersion" value="4.0.60129.0" /> <param name="autoUpgrade" value="true" /> <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration:none"> <img src=http://go.microsoft.com/fwlink/?LinkId=161376 alt="Get Microsoft Silverlight" style="border-style:none"/> </a> </object> <iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"> </iframe> </div>
可移植类库中的 API 差异
为了使可移植类库程序集在所有支持的平台中兼容,稍微更改了可移植类库中的部分成员。 API Differences in Portable Class Library.’>有关对哪些成员进行了更改以及进行了怎样的更改的详细信息,请参见可移植类库中的 API 差异。
原文连接: http://msdn.microsoft.com/zh-cn/library/gg597391(v=vs.110).aspx#feedback