Web Service代理类自动生成及编译dll工具

之前一篇文章写 Web Service服务代理类生成及编译 , 通过命令行的方式可以直接把SOAP的Webservice服务生成代理类,再编译成一个dll

需求

      既然上面可以生成了代理类,并且如果我有几个WebService需要生成,或者多次要生成代理类编译dll的,这样就会很麻烦了。把这生成代理类和编译成dll的做成一个工具就会带来方便。

 

开始行动

先直接上效果图片

 

 

第一步

    把需要到的两个工具:wsdl.exe和csc.exe工具给单独复制出来

 

第二步

    通过C#来代码来执行那两个命令行工具下面是我的一个方法:

复制代码
/// <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编译的时候会有错误,这只能去手动解决或者那两个生成的代码放在不同的命名空间了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值