添加源文件。在cc目录中新建“cc.cs”文件,并用文本编辑器打开,并输入以下代码:
using System;
using System.IO;
using System.CodeDom;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
namespace CC{
public class CC{
public static void Main(string[] args){
if(args.Length==0){
Console.WriteLine("该工具的正确使用方法是:cc 源文件");
Console.Read();
return;
}
FileInfo sourceFile=new FileInfo(args[0]);
CodeDomProvider provider=null;
if(sourceFile.Extension.ToUpper()==".CS"){
provider=CodeDomProvider.CreateProvider("CSharp");
}
else if(sourceFile.Extension.ToUpper()==".VB"){
provider=CodeDomProvider.CreateProvider("VisualBasic");
}
else{
Console.WriteLine("错误1:源代码文件必须以“.cs”或“.vb”为后缀");
}
if(provider !=null){
string exeName=String.Format(@"{0}\{1}.exe",Environment.CurrentDirectory,sourceFile.Name.Replace(".","_"));
CompilerParameters cp=new CompilerParameters();
cp.GenerateExecutable=true;
cp.OutputAssembly=exeName;
cp.GenerateInMemory=false;
CompilerResults cr=provider.CompileAssemblyFromFile(cp,args[0]);
if(cr.Errors.Count > 0){
Console.WriteLine("Errors building {0} into {1}",args[0], cr.PathToAssembly);
foreach(CompilerError ce in cr.Errors)
{
Console.WriteLine(" {0}", ce.ToString());
Console.WriteLine();
}
}
else
{
Console.WriteLine("Source {0} built into {1} successfully.",args[0], cr.PathToAssembly);
}
}
Console.Write("Press any key to exit...");
Console.Read();
}
}
}