备注:在看项目的时候看到的,顺便备注一下。

 

 

 



public ActionResult Test2()
{
string filePath = "E:\\2\\Student.code";
string[] referenceAssemblyNames = new string[]
{
"System.dll"
};
//输出dll
string outputDll = "E:\\2\\Student.dll";
string errMsg = CompileFromFile(new string[] { filePath }, referenceAssemblyNames, outputDll);
return Content(errMsg);
}


 

 



/// <summary>
/// 从文件编译
/// </summary>
/// <param name="files">要编译的代码文件集合</param>
/// <param name="referenceAssemblyNames">引用程序集名称集合</param>
/// <param name="outputAssembly">输出dll名称</param>
/// <returns>返回异常信息</returns>
public static string CompileFromFile(string[] files, string[] referenceAssemblyNames, string outputAssembly)
{
CSharpCodeProvider codeProvider = new CSharpCodeProvider();
CompilerParameters compilerParameters = new CompilerParameters(referenceAssemblyNames, outputAssembly);
CompilerResults complierResult = codeProvider.CompileAssemblyFromFile(compilerParameters, files);
if (complierResult.Errors.HasErrors)
{
StringBuilder message = new StringBuilder();
foreach (CompilerError err in complierResult.Errors)
{
message.AppendFormat("(FileName:{0},ErrLine:{1}): error {2}: {3}", err.FileName, err.Line, err.ErrorNumber, err.ErrorText);
}
return message.ToString();
}
return string.Empty;
}


 

 

 

Student.code 文件:



using System;

namespace WebApplication1.Controllers
{
public class Student
{
public string Name { get; set; }
}
}