今天有感于http://www.cnblogs.com/stone_w/archive/2012/10/12/2720832.html的这篇文章,所以写了一个Winform程序,原理都是一样,都是提取VS中的组件并用命令行运行就可以了,先看界面吧:
如下功能:
- 点击“启动”即启动服务器,
- 点击“浏览网站”或“网站地址”打开网站
- 所有CMD指令在后台运行
具体方法:
- 在项目中加入 WebDev.WebHost.dll 文件
路径:%windir%\assembly\gac_32\webdev.webhost\(文件夹下)
- 在项目中加入 WebDev.WebServer20.EXE 文件(或者WebDev.WebServer40.EXE 4.0版本)
路径:VS2008 下的 WebDev.WebServer.EXE 路径:
C:\Program Files\Common Files\Microsoft Shared\DevServer\9.0\WebDev.WebServer.EXE
VS2010 Bit64下 路径:
C:\Program Files (x86)\Common Files\microsoft shared\DevServer\10.0\WebDev.WebServer20.EXE
C:\Program Files (x86)\Common Files\microsoft shared\DevServer\10.0\WebDev.WebServer40.EXE
- 执行CMD命令 WebDev.WebServer20.EXE /port:端口号 /path:"文件物理路径" /vpath:"/"
其他不多说,直接上代码:
/// <summary> /// 启动服务 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button2_Click(object sender, EventArgs e) { //从Visual Studio 中提取的两个文件:WebDev.WebHost.dll , WebDev.WebServer20.EXE //执行CMD命令(\"为双引号的转义符),即:WebDev.WebServer20.EXE /port:端口号 /path:"文件物理路径" /vpath:"/" String str ="WebDev.WebServer20.EXE /port:"+textBox2.Text+" /path:\""+ textBox1.Text+"\" /vpath:\"/\""; RunCmd (str); //提示 listBox1.Items.Add("[" + DateTime.Now.ToShortTimeString() + "] 服务已启动......"); } /// <summary> /// 运行CMD命令 /// </summary> /// <param name="command"></param> /// <returns></returns> private void RunCmd(string command) { try { //实例一个Process类,启动一个独立进程 Process p = new Process(); //Process类有一个StartInfo属性,这个是ProcessStartInfo类,包括了一些属性和方法,下面我们用到了他的几个属性: p.StartInfo.FileName = "cmd.exe"; //设定程序名 p.StartInfo.Arguments = "/c " + command; //设定程式执行参数 p.StartInfo.UseShellExecute = false; //关闭Shell的使用 p.StartInfo.RedirectStandardInput = true; //重定向标准输入 p.StartInfo.RedirectStandardOutput = true; //重定向标准输出 p.StartInfo.RedirectStandardError = true; //重定向错误输出 p.StartInfo.CreateNoWindow = true; //设置不显示窗口 p.Start(); //启动 } catch { } }