我有一个需要为其生成客户端代理类的库,并且在我的本地机器上运行此命令和服务时,现有代码可以正常工作
svcutil.exe /config:thn /r:Citi.Rbcs.BusGn.dll /r:Citi.Rbcs.Buscm.dll net.tcp://localhost:8088/RbcThnService/mex
客户端代理生成良好。RbcThnService 使用接口 IRbcThinService。如果我随后向该接口添加一个新方法,如下所示
[OperationContract(ProtectionLevel = ProtectionLevel.EncryptAndSign)]
[FaultContract(typeof (GenericException))]
[FaultContract(typeof (CustomException))]
RbcCustomerStructure GetCustomerStructures(string CustomerId, short QueueId, DateTime dateUpdate, RbcSecurityContext securityContext);
然后重建并安装服务,并尝试重新生成客户端代理,我得到
There is an error in the XML document.
The value for the 'type' attribute is invalid - 'q32:ArrayOfstring' is an invalid value for the 'type' attribute.
听起来好像在声明中没有找到某种类型,但奇怪的是接口中有另一个方法与原始库中的签名完全相同,它允许客户端代理生成就好了。所以我只是创建一个与已经存在的方法相同的方法,只是用一个新名称。
有没有人有什么建议?
更新:好的,如果我注释掉现有方法之一并重试,那么情节会变厚 - 它适用于新方法。我已经尝试将其简化为仅几种方法加上新方法,它可以工作。我逐渐将其他方法一一重新引入,它一直在工作,直到我添加了最后一个方法,然后它出错了。
有趣的是,我开始将一个原始方法注释掉并且它正在工作,然后我创建了一个 SECOND dummy NEW 方法并且它出错了,同样的错误但是它不是 ArrayOfstring 它有一个不同的类型,因为它失败了。
因此,如果我没有找错树,它似乎与接口定义中的方法数量或生成的 XML 的长度有关。有什么我应该注意的限制吗?