自己制作C#文件编译器

对于初学者而言, 新建控制台程序,就开一个visual studio可能太过于奢侈了,况且,不利于初学者对基本知识的掌握,所以,可以利用下面的一个小程序结合一个文本编辑器,就可以编译C#的控制台文件了。

第一个界面:

SpxImage

第二个界面:

SpxImage

做一个简单的说明:

第一个界面是起始界面,第一个三个按钮是picturebox控件组成的,作用分别是:运行,浏览C#文件,和退出。

当点击运行时,就会编译C#文件,浏览是弹出第二个界面,用于查找C#文件。

程序原理:

在这个程序中,我是利用一个批处理文件来完成编译C#文件的,在这里,需要了解一个批处理和C#的CSC命令(在此不做讲解,去Google或者百度吧)。

“运行”按钮的代码:

if (File.Exists("run.bat"))
{
StreamReader sr = new StreamReader("run.bat");
string str = sr.ReadToEnd();
sr.Close();
if (str == "" || str == string.Empty || str == null)
{
MessageBox.Show("请选择需要编译的C#文件!", "C#文件编辑器", MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
else
{
Process.Start("run.bat");
}
}
else
{
MessageBox.Show("缺少编译文件!", "C#文件编辑器", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

“浏览”按钮的代码:

//浏览文件
private void pictureBox3_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.ShowDialog();
}

“退出”的按钮:

//退出
private void pictureBox4_Click(object sender, EventArgs e)
{
DeleteFile();
Application.Exit();

}

//DeleteFile()方法:

//用于删除生成的文件

private static void DeleteFile()
{
if (File.Exists("run.bat"))
{
File.Delete("run.bat");
}
}

好了,第一个界面的代码基本完成。

现在来看第二个界面的代码:

“浏览”按钮的事件:

if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
{
string spath = this.openFileDialog1.FileName;//spath包含了路径和文件名以及文件拓展名
this.textBox1.Text = spath;
}

“确定”按钮的事件:

if (this.textBox1.Text == "" || this.textBox1.Text == string.Empty || this.textBox1.Text == null)
{
MessageBox.Show("请选择需要编译的C#文件!", "C#文件编辑器", MessageBoxButtons.OK, MessageBoxIcon.Stop);

}
else
{

/* cmd命令语法格式:
* cd /d C:\Windows\Microsoft.NET\Framework\v2.0.50727
* cd /d 文件所在的路径
* csc 文件名
* 文件名
*/


/**
* set Path=C:\Windows\Microsoft.NET\Framework\v2.0.50727
* csc 文件所在的路径\文件名
* 文件名
*
* ***/
StringBuilder sb = new StringBuilder();
sb.Append("@echo off\r\nset Path=C:\\Windows\\Microsoft.NET\\Framework\\v2.0.50727\r\necho on");//设置临时环境变量
string PathWithNameAndExtendname = this.openFileDialog1.FileName;//PathWithNameAndExtendname 文件所在的路径、文件名(包含了文件的拓展名)
DirectoryInfo di = Directory.GetParent(PathWithNameAndExtendname);
FileInfo fi = new FileInfo(PathWithNameAndExtendname);
sb.Append("\r\ncsc /out:" + Path.GetDirectoryName(PathWithNameAndExtendname) + "\\" + Path.GetFileNameWithoutExtension(PathWithNameAndExtendname) + ".exe");//编译命令的前半部分的out命令
sb.Append(" /target:exe " + fi.FullName);//编译命令的后半部分 输出目标
sb.Append("\r\n@echo off\r\n cd /d " + Path.GetDirectoryName(PathWithNameAndExtendname));
sb.Append("\r\necho on\r\n" + Path.GetFileNameWithoutExtension(PathWithNameAndExtendname) + ".exe" + "\r\nPause");//运行(包含了文件的拓展名)
FileStream fs = new FileStream("run.bat", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
fs.Close();
StreamWriter sw = new StreamWriter("run.bat");
sw.Write(sb);
sw.Flush();
sw.Close();
this.Close();
好了 以上就是一个简易的C#文件编译器了的80%的代码了。源码已经在我的空间里发布了。需要的可以下载。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值