【发布时间】:2010-11-15 01:56:12
【问题描述】:
我的服务引用使用的命名空间有问题。我有许多 WCF 服务,比如命名空间 MyCompany.Services.MyProduct(实际的命名空间更长)。
作为产品的一部分,我还提供了一个示例 C# .NET 网站。此 Web 应用程序使用命名空间 MyCompany.MyProduct。
在最初的开发过程中,该服务作为项目引用添加到网站并直接使用。我使用了一个工厂模式,它返回一个实现MyCompany.Services.MyProduct.IMyService 的对象实例。到目前为止,一切顺利。
现在我想更改它以使用实际的服务引用。添加引用并在命名空间文本框中输入MyCompany.Services.MyProduct 后,它会在命名空间MyCompany.MyProduct.MyCompany.Services.MyProduct 中生成类。 糟糕! 我不想仅仅因为我使用代理类而在多个地方更改using 指令。所以我尝试在命名空间前加上global::,但不被接受。
请注意,我什至还没有删除原始程序集引用,并且启用了“重用类型”,但显然没有进行重用。 但是,我不想在我的示例网站中保留程序集引用以使其正常工作。
到目前为止,我想出的唯一解决方案是将我的 Web 应用程序的默认命名空间设置为 MyCompany(因为它不能为空),并将服务引用添加为 Services.MyProduct。假设客户想使用我的示例网站作为起点,并且他们将默认命名空间更改为 OtherCompany.Whatever,这显然会破坏我的解决方法。
这个问题有好的解决办法吗?
总结:我想在原始命名空间中生成一个服务引用代理,而不引用程序集。
注意:我见过this question,但没有提供适合我的用例的解决方案。
编辑:正如 John Saunders 所建议的,我已就此向 Microsoft 提交了一些反馈:
Feedback item @ Microsoft Connect
【问题讨论】:
标签: c# .net wcf namespaces svcutil.exe