有没有办法在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.csproj

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

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

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

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