.net 让Visual Studio与多个服务引用共享命名空间

.net 让Visual Studio与多个服务引用共享命名空间,.net,wcf,service-reference,.net,Wcf,Service Reference,是否有任何方法可以让Visual Studio允许多个服务引用共享一个名称空间,而不必手工编码Reference.cs文件 我正在开发一个客户端应用程序,该应用程序使用同一解决方案中的多个服务。类似于微软为MS Project Server提供的项目服务接口(PSI)API。而不是为每个单独的服务引用使用不同的命名空间,例如: MyProject.ProjectService.ProjectServiceClient MyProject.ResourceService.ResourceServi

是否有任何方法可以让Visual Studio允许多个服务引用共享一个名称空间,而不必手工编码Reference.cs文件

我正在开发一个客户端应用程序,该应用程序使用同一解决方案中的多个服务。类似于微软为MS Project Server提供的项目服务接口(PSI)API。而不是为每个单独的服务引用使用不同的命名空间,例如:

MyProject.ProjectService.ProjectServiceClient
MyProject.ResourceService.ResourceServiceClient
MyProject.TimesheetService.TimesheetServiceClient
如果我们可以将它们全部放在一个名称空间中,那就太好了,比如:

MyProject.Services.ProjectServiceClient
MyProject.Services.ResourceServiceClient
MyProject.Services.TimesheetServiceClient
与此相伴而来的是共享公共代码的能力。例如,如果这些服务中的任何一个公开了相同的数据契约。现在,如果我想编写客户端可以使用的代码,我必须为每个服务代理创建一个单独的版本,因为公共契约存在于三个不同的名称空间中。看到我要去哪里了吗

有可能吗

更新


让我们假设我没有访问服务代码的权限(因为我没有),这意味着共享类库不是一个选项。在这种情况下,我的选择是什么?

您可以将这些公共类放入服务和客户端共享的类库中。然后,Visual Studio将不会为每个服务引用生成类,而是使用公共类库。

哪个版本的Visual Studio?您使用的是服务引用还是Web引用?我使用的是Visual Studio 2010并添加了一个服务引用。(PSI的使用只是一个例子。)是的,我意识到了这一点。我只是希望有一种方法可以让它更干净一点,或者说更好一点:自动。如果你同时控制服务的服务器端和客户端,这是一种很棒的技术,有很多好处。我认为我最喜欢的这种技术的特点是,你不再需要维护那些糟糕的服务引用dir和Reference.cs文件,egad,这些都是很痛苦的。@Chris:你仍然有Reference.cs文件,它们只是少了一些。@John Saunders,我会加倍努力,制作你自己的Reference.cs文件。这样,当您的happy dev团队中的其他人更改契约并忘记更新所有客户机引用时,您可能会出现编译时错误(这比在运行时发现破坏的契约更改要好得多;-)@Chris:如果可能的话,我会使用自动生成后功能测试,因此,我们将在夜间构建期间发现问题。需要一些基础设施,但很值得。