本文原文鏈接:http://www.cnblogs.com/dengxinglin/p/3334158.html html
以前一篇文章寫 Web Service服務代理類生成及編譯 , 經過命令行的方式能夠直接把SOAP的Webservice服務生成代理類,再編譯成一個dll工具
需求post
既然上面能夠生成了代理類,而且若是我有幾個WebService須要生成,或者屢次要生成代理類編譯dll的,這樣就會很麻煩了。把這生成代理類和編譯成dll的作成一個工具就會帶來方便。ui
開始行動url
先直接上效果圖片spa
第一步:命令行
把須要到的兩個工具:wsdl.exe和csc.exe工具給單獨複製出來代理
第二步:調試
經過C#來代碼來執行那兩個命令行工具下面是個人一個方法:code
/// <summary> /// 輸入參數執行命令的方法 /// </summary> /// <param name="argument"></param> /// <returns></returns> public string Startcmd(string argument) { string output = ""; try { Process cmd = new Process(); cmd.StartInfo.FileName = FileName; cmd.StartInfo.Arguments = argument; cmd.StartInfo.UseShellExecute = false; cmd.StartInfo.RedirectStandardInput = true; cmd.StartInfo.RedirectStandardOutput = true; cmd.StartInfo.CreateNoWindow = true; cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; cmd.Start(); output = cmd.StandardOutput.ReadToEnd(); //Console.WriteLine(output); cmd.WaitForExit(); cmd.Close(); } catch (Exception e) { output = e.ToString(); return output; // Console.WriteLine(e); } return output; }
第三步:
調試。在wsdl工具生成代理通常都沒有問題,也能正常生成代理類;可是用csc編譯成dll的時候,運行csc工具會有錯誤,咱們須要引用一個cscompui.dll,安裝vs後能夠直接找到的。還須要把代理中引用的程序集都填寫上,也包括是系統的程序集。通常會包括下面的命名空間引用
using System.Xml.Serialization; using System.Web.Services; using System.ComponentModel; using System.Web.Services.Protocols; using System; using System.Diagnostics; using System.Data;
System.Xml.Serialization 是在System.XML.dll程序集
System.Web.Services 程序集是System.Web.Services.dll
using System.Diagnostics;using System.ComponentModel;using System;程序集都在System.dll
System.Data的程序集是System.Data.dll
我把那四個程序集的framework3.5的單獨複製出來的;
你若是是要修改爲4.0:
一:能夠本身找到4.0下面相應的dll去替換掉,
二:先把這個項目修改爲framework4.0的項目,以後在程序中References-->System.Data--》properties-->Copy local的屬性值給爲true,就到複製出framework4.0的版本dll,
若是csc編譯有錯誤:根據返回的錯誤代碼能夠參考http://msdn.microsoft.com/zh-cn/library/ms228296.aspx,均可以找到緣由的。
上傳速度太慢,在博客園上傳不了,上傳到了百度網盤:百度網盤下載
備註: 因爲wsdl生成的代理類和方法大都是公共的,若是兩個不一樣的WebService,生成使用了相同的命名空間,則在csc編譯的時候會有錯誤,這隻能去手動解決或者那兩個生成的代碼放在不一樣的命名空間了。