关于动态编译的问题(为啥生成的文件最后删除不掉)

angeldgz 2013-05-19 11:10:43
上代码:
 public static T Eval<T>(string code)
{
//get the code to compile
string strSourceCode = GetComplainCode(typeof(T).Name,code);
//1. Create an addtional AppDomain
AppDomainSetup objSetup = new AppDomainSetup();
objSetup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory;
AppDomain objAppDomain = AppDomain.CreateDomain("MyAppDomain", null, objSetup);
// 1.Create a new CSharpCodePrivoder instance
CSharpCodeProvider objCSharpCodePrivoder = new CSharpCodeProvider();
// 2.Sets the runtime compiling parameters by crating a new CompilerParameters instance
CompilerParameters objCompilerParameters = new CompilerParameters();
objCompilerParameters.ReferencedAssemblies.Add("system.dll");
objCompilerParameters.ReferencedAssemblies.Add("gzLib.dll");
// Load the remote loader interface
//objCompilerParameters.ReferencedAssemblies.Add("RemoteAccess.dll");
// Load the resulting assembly into memory
objCompilerParameters.GenerateInMemory = false;
string outFileName = "TempCompilerResult" + new Random().Next() + ".dll";
objCompilerParameters.OutputAssembly = outFileName;
// 3.CompilerResults: Complile the code snippet by calling a method from the provider
CompilerResults cr = objCSharpCodePrivoder.CompileAssemblyFromSource(objCompilerParameters, strSourceCode);
if (cr.Errors.HasErrors) {
StringBuilder error = new StringBuilder();
error.Append("Error Compiling Expression: ");
foreach (CompilerError err in cr.Errors)
{
error.AppendFormat("{0}\n", err.ErrorText);
}
throw new Exception("Error Compiling Expression: " + error.ToString());
}
// 4. Invoke the method by using Reflection
object evalObj=objAppDomain.CreateInstance(cr.CompiledAssembly.FullName, "GzAutoEval._GzEvalClass").Unwrap();
// with help of factory, create a real 'LiveClass' instance
MethodInfo mi = evalObj.GetType().GetMethod("Eval");
T value = (T)mi.Invoke(evalObj, null);
AppDomain.Unload(objAppDomain);
System.IO.File.Delete(outFileName);
return value;
}

最后已经卸载AppDomain.Unload(objAppDomain)了,为啥删除输出文件的时候依然出错呢了?
分数不够可以再加,只求大神指点!
...全文
101 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
devmiao 2013-05-19
  • 打赏
  • 举报
回复
http://stackoverflow.com/questions/1468151/appdomain-unload-doesnt-release-the-assembly-i-loaded-up-with-reflection

17,741

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧