为WCF服务添加服务引用会生成空的reference.cs

时间:2013-04-19 15:33:50

标签: c# .net wcf service-reference

之前我已经看过这个问题(here为一个),但解决方法是不重用引用的程序集。 我需要重用包含的程序集,因为多个服务引用相同的共享对象。 如果我不重用程序集,我会得到名称空间错误,因为引用了相同的Object 不同的命名空间。 (即Service1.Object,Service2.Object)

简而言之,我需要为Web服务扩展ClientBase的生成的Client类,但我无法取消重用引用的程序集,因为我需要具有相同名称空间的共享对象。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您可以使用 svcutil.exe 生成客户端代理,并使用 / r 开关指定要引用的程序集,而不是在自动生成中重新发出的程序集客户代理代码。

  • ProjACommon
  • ProjBSvc
    • 参考文献ProjACommon
  • ProjCClient
    • 参考文献ProjACommon
    • 您希望客户端引用ProjA类型和/或代码,而不是将它们自动生成到C中的新命名空间中

在构建ProjBSvc后执行以下操作,输出.wsdl&的.xsd

svcutil.exe ProjBSvc.dll

第二消耗wsdl& xsd生成代理/客户端:

svcutil.exe *.wsdl *.xsd /o:<ProjCClientPath>/Client.cs /r:ProjACommon.dll

ProjCClient引用从先前步骤生成的Client.cs

使用对象浏览器构建和检查,您将看到C中引用A类型的类型,而不是C命名空间中具有相同名称的新类型。 您可能希望/tcv/n以及其他开关满足您的需求。

这是article可能会有所帮助。它还链接到Microsoft documentation for svcutil

答案 1 :(得分:0)

使用映射器,这意味着您必须复制模型(对象)并使用一个类将对象从一个名称空间映射到下一个名称空间。