.net WebService wsdl 生成 dll 文件

博客介绍了将WebService文件转化为CS类文件及生成代理类DLL文件的方法。先通过WSDL.exe工具,在Visual Studio命令提示符中执行命令将WebService文件转化成CS类文件,再使用csc.exe工具,在CMD中执行命令将CS文件生成DLL文件。

一、利用WSDL.exe将webservice文件转化成cs类文件

開始  =》 所有程式   =》 Microsoft Visual Studio 2010 =》Visual Studio Tools  =》選中 Visual Studio 命令提示字元 (2010) 以系統管理員身份執行

命令: cd C:\Program Files\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools

wsdl /out:XXX_WebService.cs  http:// 10.10.10.10:80 /XXX_WebService/API_Service.asmx

(

      wsdl E:\WS.wsdl /out:WS.cs

     E:\WS.wsdl  是wsdl文件存储路径,也可以是http://localhost:8888/WS.asmx?wsdl

)

執行完在C:\Program Files\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools目錄下會生成 XXX_WebService.cs

一、利用csc.exe生成代理類的dll文件

cmd =》管理員身份執行

命令:cd  C:\Windows\Microsoft.NET\Framework\v2.0.50727

將剛才生成的.cs文件複製到新建的C:/CS目錄下

csc /t:library C:\cs\XXX_WebService.cs 

在C:\Windows\Microsoft.NET\Framework\v2.0.50727目錄下生成  LCM_API_WebService.dll

 

 

动态调用WebService的方法类,可以不用在VS本地引用,直接动态调用即可。 样例如下: /// /// 实例化WebServices /// /// WebServices地址 /// 调用的方法 /// 把webservices里需要的参数按顺序放到这个object[]里 public static object InvokeWebService(string url, string methodname, object[] args) { //这里的namespace是需引用的webservices的命名空间,我没有改过,也可以使用。也可以加一个参数从外面传进来。 //string @namespace = "Nq.Application.WebService"; string @namespace = "client"; try { //获取WSDL WebClient wc = new WebClient(); //Stream stream = wc.OpenRead(url); Stream stream = wc.OpenRead(url + "?WSDL"); ServiceDescription sd = ServiceDescription.Read(stream); string classname = sd.Services[0].Name; ServiceDescriptionImporter sdi = new ServiceDescriptionImporter(); sdi.AddServiceDescription(sd, "", ""); CodeNamespace cn = new CodeNamespace(@namespace); //生成客户端代理类代码 CodeCompileUnit ccu = new CodeCompileUnit(); ccu.Namespaces.Add(cn); sdi.Import(cn, ccu); CSharpCodeProvider csc = new CSharpCodeProvider(); //ICodeCompiler icc = csc.CreateCompiler(); //设定编译参数 CompilerParameters cplist = new CompilerParameters(); cplist.GenerateExecutable = false;//动态编译后的程序集不生成可执行文件 cplist.GenerateInMemory = true;//动态编译后的程序集只存在于内存中,不在硬盘的文件上 cplist.ReferencedAssemblies.Add("System.dll"); cplist.ReferencedAssemblies.Add("System.XML.dll"); cplist.ReferencedAssemblies.Add("System.Web.Services.dll"); cplist.ReferencedAssemblies.Add("System.Data.dll"); //编译代理类 CompilerResults cr =
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值