使用 SvcUtil.exe 生成WCF服务的客户端代理类

momo314相同方式共享非商业用途署名转载

背景:

最近在为一个项目添加web服务引用的时候出现了一个问题。这个项目之前已经引用过大概5、6个web服务了,并且分别指定了几个的解析类型引用的程序集,然后这些服务中的类型还会重名,虽然不在一个命名空间中。

也不知道到底是哪里粗了什么问题,总之后来有一天我想更新某个引用或者新添加一个引用是就各种问题呀,不是更新完各种找不到命名空间和类型,就是添加完引用后之后里面少几个方法,我那个头大呀。。。

那个,各位谁知道是什么问题导致的,或者有什么解决方法,麻烦告知下,感激不尽。

好了,说正事儿:

后来我就发现什么添加服务引用不过就是在客户端生成一个代理类而已,大不了这个代理类我们手写其实也是可以的(完全懒得写),那么有没有什么方法能够自动生成代理类呢,还真有,那就是 SvcUtil.exe

那么,怎么用呢?

首先,打开 visual studio 命令行提示工具 , 输入 SvcUtil /help就可以查看帮助了,里面会详细列出每个参数的含义及使用方法。下面我会挑几个常用的参数记录下:

  • /out:<file> 参数可以指定生成的代理类文件的存放位置
  • /r:<file> 参数可以指定解析服务中类型引用的程序集
  • /config:<configFile> 可以指定生成的配置文件的存放位置
  • /noConfig 表示不生成配置文件

OK,基本上这些参数就够用啦,那么,咱们来试一下:

现在有一个服务,地址为:http://service.demo.com/userservice.svc,我们想在D:\Services\ 生成一个代理类,叫做UserService.cs,并且使用D:\ApiContract.dll来解析服务中的类型,同时不生成配置文件,怎么写呢?

SvcUtil http://trade.api.maiche.biz/v1/hmcuser/order/OrderService.svc /out:D:\Services\UserService.cs /r:D:\ApiContract.dll /noConfig

OK!就这么简单,然后你就可以去对应目录下复制代理类文件并粘贴到项目中啦 ( ̄ˇ ̄)v

关于SvcUtil工具的更多信息,请访问 SvcUtil使用简介 或直接查询 /help命令。

✎﹏ 本文来自于 momo314和他们家的猫,文章原创,转载请注明作者并保留原文链接。