为 WCF 服务添加服务引用会生成空的 reference.cs
Posted
技术标签:
【中文标题】为 WCF 服务添加服务引用会生成空的 reference.cs【英文标题】:Adding Service Reference for WCF Service generates empty reference.cs 【发布时间】:2013-04-13 01:29:09 【问题描述】:我以前见过这个问题(here 一个),但是解决方案是不重用引用的程序集。 我需要重用包含的程序集,因为多个服务引用相同的共享对象。 如果我不重用程序集,我会收到命名空间错误,因为通过引用相同的对象 不同的命名空间。 (即Service1.Object,Service2.Object)
简而言之,我需要生成的 Client 类扩展了 Web 服务的 ClientBase,但我无法取消选中重用引用的程序集,因为我需要具有相同命名空间的共享对象。有什么建议吗?
【问题讨论】:
Sometimes adding a WCF Service Reference generates an empty reference.cs的可能重复 【参考方案1】:您可以使用 svcutil.exe 生成您的客户端代理,并使用 /r 开关来指定您想要引用而不是在自动生成的程序中重新发出的程序集客户端代理代码。
ProjACommon ProjBSvc 参考 ProjACommon ProjCClient 参考 ProjACommon 您希望客户端引用 ProjA 类型和/或代码,而不是将它们自动生成到 C 中的新命名空间中在构建 ProjBSvc exec 之后,输出 .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
【讨论】:
您能否参考一个很好的示例或链接,我可以在其中获得更多详细信息?【参考方案2】:使用映射器,这意味着您必须复制模型(对象)并有一个类将对象从一个命名空间映射到下一个命名空间。
【讨论】:
以上是关于为 WCF 服务添加服务引用会生成空的 reference.cs的主要内容,如果未能解决你的问题,请参考以下文章
添加服务引用会生成空的reference.cs 和空的config.svcinfo 文件
将标志添加到枚举后:Wcf 错误:错误 5 自定义工具错误:无法为服务引用“MyService”生成代码
将 WCF 服务添加为 Web 引用和服务引用时的不同代理类
将 WCF 服务添加为 Web 引用和服务引用时的不同代理类