WCF XmlSerialization以某种方式错误地解释为DataContract序列化-post VS 2012 Update1

WCF XmlSerialization以某种方式错误地解释为DataContract序列化-post VS 2012 Update1,wcf,xml-serialization,.net-4.5,datacontractserializer,svcutil.exe,Wcf,Xml Serialization,.net 4.5,Datacontractserializer,Svcutil.exe,我们有一个WCF/ASP.NET托管的web服务。服务契约中的数据类型使用XSD.exe生成的类型,因此使用XmlSerialization属性进行修饰。我们使用SvcUtil为它创建了一个客户端,包括使用/ser:XmlSerializer参数。我已经工作多年了 我们刚刚升级了构建脚本以使用VS 2012和V8.0A Windows/.NET SDK NETFX 4.0工具版本的SvcUtil.exe(V4.0.30319.17929) 现在,当我们的客户端(使用VS 2012和新的8.0A

我们有一个WCF/ASP.NET托管的web服务。服务契约中的数据类型使用XSD.exe生成的类型,因此使用
XmlSerialization
属性进行修饰。我们使用SvcUtil为它创建了一个客户端,包括使用
/ser:XmlSerializer
参数。我已经工作多年了

我们刚刚升级了构建脚本以使用VS 2012和V8.0A Windows/.NET SDK NETFX 4.0工具版本的SvcUtil.exe(V4.0.30319.17929)

现在,当我们的客户端(使用VS 2012和新的8.0A SvcUtil构建)尝试调用WCF服务时,我们看到一条奇怪的错误消息:

无法序列化类型“System.Threading.Tasks.Task1[MyNamespace.MyClient.MyDataStructure]”。考虑使用DATACONTractAttor属性对其进行标记,并标记要使用DATAMEMBAREATE属性序列化的所有成员。如果类型是集合,请考虑用CopyDATAcNoTractAttor标记它。有关其他受支持的类型,请参阅Microsoft.NET Framework文档。

这个错误使我们的应用程序无法调用WCF服务,我们被卡住了

我注意到,我们没有为
/async
向SvcUtil传递参数。我还注意到,用于.NET SDK 8.0A(v 4.0.30319.17929)的SvcUtil帮助表明默认情况下是生成同步和基于任务的异步方法签名。在
系统.Threading.task
XmlSerializer
之间是否存在一些内置的断开连接


关于如何防止运行时在我们打算使用
XmlSerialization
时以某种方式认为我们在使用
DataContractSerialization

的建议,Microsoft给出了答案

简而言之,如果您打算使用.NET 4.5
SvcUtil
构建,但目标是.NET 4运行时,则需要
/syncOnly

我从@vossad01中看到,我们可以添加
/syncOnly
以防止生成
系统.Threading.Tasks.Task1
类型包装构造。但是,如果我们希望使用基于任务的异步方法,该怎么办?