合并不同WebService之间的相同对象类型

在.NET中使用WebService极其简单,只要添加Web引用即可,然后IDE就会帮你搞定所有一切,但这样做有个缺点,VS.2005的IDE生成的对应每个Web Service的WebServiceProxy类都有自己独立的命名空间,这导致了即使相同的.NET类型,发布在不同的WebService之后,生成的WebServiceProxy类型都在各自的独立命名空间中,结果就是在客户端中使用这些.NET类很麻烦。

其实在.NET中共享不同Web Service只见相同的对象类型是完全可以的,使用命令行方式调用wsdl.exe就可以:

"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\wsdl.exe" /nologo /language:cs /sharetypes /out:MES_WebService.cs /namespace:TRG_MES.MES_WebService http://localhost/MES_Srv/WIP_Workflow.asmx?WSDL http://localhost/MES_Srv/WIP_Transaction.asmx?WSDL http://localhost/MES_Srv/SYS_SiteInfo.asmx?WSDL http://localhost/MES_Srv/RAS_Equipment.asmx?WSDL

如果要将这条命令集成到IDE的自动生成中,可以在菜单->项目->属性->生成事件中,预生成事件命令行中填入:

$(ProjectDir)generateProxy.bat /out:$(ProjectDir)MES_WebService.cs

generateProxy.bat中内容如下:

"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\wsdl.exe" /nologo /language:cs /sharetypes %1 /namespace:TRG_MES.MES_WebService http://localhost/MES_Srv/WIP_Workflow.asmx?WSDL http://localhost/MES_Srv/WIP_Transaction.asmx?WSDL http://localhost/MES_Srv/SYS_SiteInfo.asmx?WSDL http://localhost/MES_Srv/RAS_Equipment.asmx?WSDL

posted @ 2008-04-30 12:50  丁丁  阅读(907)  评论(0编辑  收藏  举报