1

我一直在使用 Slsvcutil 为我的 WCF 服务生成代理,这将与 Xamarin.ios 兼容。我从来没有遇到过问题。但是,今天,我尝试更新我的代理,结果合同不完整。

以前我会使用命令行:

"C:\Program Files (x86)\Microsoft SDKs\Silverlight\v5.0\Tools\\SlSvcUtil.exe" http://localhost/Service.svc /out:Service.cs

它会生成一个数据合约服务。现在它生成一个只包含 XmlSerialization 属性的服务文件——这显然对我不起作用。

因此,我修改了命令行参数以强制 DataContract 序列化:

"C:\Program Files (x86)\Microsoft SDKs\Silverlight\v5.0\Tools\\SlSvcUtil.exe" http://localhost/Service.svc /mc /serializer:DataContractSerializer /out:Service.cs

这正确地导致了 DataContract 序列化,但是,我的 C# 代理完全省略了所有消息合同(我认为/mc应该修复)。所有方法签名都接受“对象”作为参数,以前它们是正确的完整合同,描述所有参数成员。

我能看到的唯一区别是运行时的版本已经改变......(在生成的代理文件的标题中标记):

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.18449
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.34014
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
4

0 回答 0