有没有一种方法可以在更新WCF上的服务时自动更新代理对象




我有一个我正在处理的WCF web服务。目前,每次我在服务器端更改服务中的约定时,我都需要更新服务引用,并使用"svcutil.exe"重新生成客户端使用的代理对象。是否可以自动执行这两项操作?我曾经看到有人在reference.cs文件中生成了客户端,但我不知道他是怎么做到的。我正在使用visual studio 2010。

到目前为止,我所发现的只是不同的msdn引用告诉我使用svcutil。这并不直观,通常在使用VS时,我可以找到比cmd更简单的解决方案。

如果您想自动化开发工作,请学习命令行和svcutil.exe.

您应该使用svctuil.exe生成wsdl和代理类,这些类将进入一个名为"MyService.ClientApi"的项目中。为了简化操作,请在服务项目的构建事件中使用一个要调用的批处理文件。

有关更多详细信息,请阅读http://www.codeproject.com/Articles/627240/WCF-for-the-Real-World-Not-Hello-World

在阅读了这篇CodeProject文章之后,您应该能够创建相应的批处理文件,并在构建事件中调用它们。

您将看到将合同和实施分离为两个项目的美妙之处。

比方说,你会有

  • 在生成后事件中调用带有CreateWsdl.bat的MyServiceContracts.csproj
  • MyServiceImp.csproj
  • 带有CreateProxy.bat的MyServiceClientApi.cssproj

您可以让CreateWsdl.bat调用CreateProxy.bat。因此,每次更改合同时,您都会发布新的Wsdl/XSD文件,所有客户端程序都会使用新的MyServiceClientApi.dll。

您可以右键单击Visual Studio项目中的"服务引用",然后选择"更新服务引用"。这将更新您的代理类和配置文件。

如果您愿意放弃使用自动生成,您可以手动构建服务契约类(继续使用reference.cs作为起点(,然后构建为一个单独的程序集,可以在客户端和服务器之间共享。无论何时重新生成合同程序集,任何后续更改的传播都将根据需要自动进行。

已解决。显然,我不得不取消选中引用程序集中的重用类型复选框,svcutil生成的文件和reference.cs文件之间没有更多区别。我想责怪微软,但这确实有道理。该死非常感谢大家

最新更新