【概括介紹】
WebService代理類生成工具是一款能夠一次生成多個(gè)web service的代理類,并直接編譯成一個(gè)dll的工具。
【基本介紹】
通過命令行的方式可以直接把SOAP的Webservice服務(wù)生成代理類,再編譯成一個(gè)dll,既然上面可以生成了代理類,并且如果我有幾個(gè)WebService需要生成,或者多次要生成代理類編譯dll的,這樣就會(huì)很麻煩了。把這生成代理類和編譯成dll的做成一個(gè)工具就會(huì)帶來方便。
【使用方法】
第一步:
把需要到的兩個(gè)工具:wsdl.exe和csc.exe工具給單獨(dú)復(fù)制出來
第二步:
通過C#來代碼來執(zhí)行那兩個(gè)命令行工具下面是我的一個(gè)方法:
/// <summary>
/// 輸入?yún)?shù)執(zhí)行命令的方法
/// </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;
}
第三步:
調(diào)試。在wsdl工具生成代理一般都沒有問題,也能正常生成代理類;但是用csc編譯成dll的時(shí)候,運(yùn)行csc工具會(huì)有錯(cuò)誤,我們需要引用一個(gè)cscompui.dll,安裝vs后可以直接找到的。還需要把代理中引用的程序集都填寫上,也包括是系統(tǒng)的程序集。一般會(huì)包括下面的命名空間引用
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
我把那四個(gè)程序集的framework3.5的單獨(dú)復(fù)制出來的;
【修改成4.0】
一:可以自己找到4.0下面相應(yīng)的dll去替換掉,
二:先把這個(gè)項(xiàng)目修改成framework4.0的項(xiàng)目,之后在程序中References-->System.Data--》properties-->Copy local的屬性值給為true,就到復(fù)制出framework4.0的版本dll,
如果csc編譯有錯(cuò)誤:,都可以找到原因的。
備注: 由于wsdl生成的代理類和方法大都是公共的,如果兩個(gè)不同的WebService,生成使用了相同的命名空間,則在csc編譯的時(shí)候會(huì)有錯(cuò)誤,這只能去手動(dòng)解決或者那兩個(gè)生成的代碼放在不同的命名空間了。


































