我有一个WCF Web服务,我正在努力。目前,每当我在服务器端更改服务合同时,我都需要更新服务引用并使用“svcutil.exe”重新生成客户端使用的代理对象。无论如何都要自动执行这两项操作?我曾经看到有人在reference.cs文件中生成了客户端,但我不知道他是怎么做到的。我正在使用visual studio 2010.
到目前为止,我所发现的只有不同msdn references告诉我使用svcutil。它不直观,通常我可以在使用VS时找到比cmd更简单的解决方案。
答案 0 :(得分:3)
如果要自动执行开发工作,请学习命令行和svcutil.exe。
您应该使用svctuil.exe生成wsdl和代理类,这些类进入名为" MyService.ClientApi"的项目。为了使事情更容易,使用批处理文件在服务项目的构建事件中调用。
有关详情,请参阅http://www.codeproject.com/Articles/627240/WCF-for-the-Real-World-Not-Hello-World
阅读此CodeProject文章后,您应该能够创建相应的批处理文件,并在构建事件中调用它们。
您将看到将合同和实施分成两个项目的美妙之处。
说,你会有
您可以使CreateWsdl.bat调用CreateProxy.bat。因此,每次在合同中进行更改时,都会有新的Wsdl / XSD文件要发布,新的MyServiceClientApi.dll将被所有客户端程序使用。
答案 1 :(得分:0)
您可以右键单击Visual Studio项目中的“服务引用”,然后选择“更新服务引用”。这将更新您的代理类和配置文件。
答案 2 :(得分:0)
如果您愿意放弃使用自动生成,您可以手动构建服务合同类(继续使用reference.cs作为起点),然后构建为可以在客户端之间共享的单独程序集和服务器。无论何时重建合同装配,随后都会自动进行任何后续更改的传播。
答案 3 :(得分:0)
解决。显然我必须取消选中引用程序集中的重用类型复选框,并且svcutil生成的文件与reference.cs文件之间没有更多区别。我想责怪微软,但它确实有道理。该死的。非常感谢大家