有没有办法在WCF上更新服务时自动更新代理对象?

时间:2014-07-24 20:56:24

标签: c# visual-studio-2010 web-services wcf visual-studio


我有一个WCF Web服务,我正在努力。目前,每当我在服务器端更改服务合同时,我都需要更新服务引用并使用“svcutil.exe”重新生成客户端使用的代理对象。无论如何都要自动执行这两项操作?我曾经看到有人在reference.cs文件中生成了客户端,但我不知道他是怎么做到的。我正在使用visual studio 2010.

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

4 个答案:

答案 0 :(得分:3)

如果要自动执行开发工作,请学习命令行和svcutil.exe。

您应该使用svctuil.exe生成wsdl和代理类,这些类进入名为" MyService.ClientApi"的项目。为了使事情更容易,使用批处理文件在服务项目的构建事件中调用。

有关详情,请参阅http://www.codeproject.com/Articles/627240/WCF-for-the-Real-World-Not-Hello-World

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

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

说,你会有

  • MyServiceContracts.csproj,在后期构建事件中调用CreateWsdl.bat
  • MyServiceImp.csproj
  • MyServiceClientApi.csproj with CreateProxy.bat

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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