我已经使用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
应该修复)。所有方法签名都接受" object"作为论点,以前它们是正确的,完整的合同,描述所有论证成员。
我能看到的唯一区别是运行时版本已更改...(如生成的代理文件的标题中所标记):
在
//------------------------------------------------------------------------------
// <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>
//------------------------------------------------------------------------------