设定: 在过去的一年中,我创建了大约20个常用的WCF服务,用于处理公司内的特定任务。开发人员已开始在其应用程序中轻松使用这些服务来执行这些特定任务。问题在于,因为公司目前没有任何职位来强制使用这些公共服务(小公司,我们只是没有资源或带宽来执行标准,我希望在问题到来之前解决这个问题更糟糕或无法管理)一些团队倾向于编写自己的服务,这些服务在功能上反映了现有服务已经存在的功能。
要解决此问题,我正在构建一个基本的Web应用程序,它只是构建一个“服务层”类库,其中包含执行特定功能的公共服务引用(包括一些公开的帮助程序方法)。例如,如果应用程序应允许部分保存和文件上载的要求,那么我将向文件上载服务和表单保存服务添加服务引用到此服务层类库。
问题:
有没有办法动态/以编程方式检索WCF服务引用的文件(就像VS 2010“添加服务引用”时那样)并将它们附加到csproj文件中?我知道如何构建一个通用的构建文件(csproj),但我不确定需要什么或者为该项目添加服务引用的最佳方法是什么。
非常感谢任何帮助,我提前感谢您的时间。
答案 0 :(得分:1)
您无需生成这些文件即可访问WCF服务 - VS2010正在为您做什么*正在生成合同和数据对象的客户端镜像。例如,如果您在服务器上定义了Foo
,那么您将获得已创建的客户端版本,生成的代理将反序列化为Foo
的客户端版本。
如果您确实要生成这些文件,请参阅this previous SO answer以获取如何使用svcutil.exe生成代理文件到特定目录的示例。请注意,您确实应该将合同和数据对象放在单独的程序集中,如果这样做,您将能够在客户端和服务器之间实现重用 - 换句话说,svcutil将不需要生成客户端副本那些数据对象。
*请记住,这是VS的默认行为,可以更改。