可移植子集项目使 .NET 程序集程序员能够维护单个源树和生成系统,同时仍支持多个 .NET 实现(桌面、Silverlight、Windows Phone 和 Xbox)。 可移植子集项目仅引用可用于任何 .NET 实现的 .NET 程序集的可移植库。
添加服务参考详细信息
在可移植子集项目中添加服务引用时,将强制实施以下限制:
对于 XmlSerializer,只允许使用文本编码。 SOAP 编码在导入过程中生成错误。
对于使用 DataContractSerializer 场景的服务,提供了数据合同代理,以确保复用的类型仅来自可移植子集。
忽略依赖于可移植库不支持的绑定的终结点(除了 BasicHttpBinding 和 WSHttpBinding 之外的所有绑定,且这些绑定不涉及事务流、可靠会话或 MTOM 编码,以及等效的自定义绑定)。
在导入之前的所有操作中,将从所有消息描述删除消息标头。
不可移植的属性 DesignerCategoryAttribute、SerializableAttribute 和 TransactionFlowAttribute 已从生成的客户端代理代码中移除。
从 ServiceContractAttribute、OperationContractAttribute 和 FaultContractAttribute 中删除非可移植属性 ProtectionLevel、SessionMode、IsInitiating 和 IsTerminating。
所有服务操作都是作为客户端代理上的异步操作生成的。
将删除使用不可移植类型的生成的客户端构造函数。
CookieContainer实例在生成的客户端上公开。
注释插入文件顶部,用于标识代码生成器的程序集和版本:
// This code was auto-generated by Microsoft.VisualStudio.Portable.AddServiceReference, version 1.0.0.0
不支持该 ISerializable 接口。
不支持 Net.Tcp 和 PollingDuplex 绑定
始终将 DataContractSerializer 用于错误。
IsWrapped 在可移植子集项目中不受支持。