我已经生成了一个动态程序集,并希望将其保存在数据库中。为此,我在编译器参数中将 GenerateInmemory 设置为 false,然后将 outputassembly 路径作为 C:\xxx.dll 传递。然后我正在做 File.ReadAllBytes(CompilerResults.PathToAssembly) 并将这个 byte[] 保存到数据库中。完成所有这些后,我正在尝试删除我正在访问被拒绝错误文件打开错误的文件。有没有办法关闭文件然后删除文件?
CompilerParameters cParams = new CompilerParameters();
cParams.GenerateInMemory = false;
cParams.IncludeDebugInformation = false;
CodeDomProvider cProvider =
CodeDomProvider.CreateProvider("CSharp");
cParams.OutputAssembly = @"c:\xxx.dll";
cParams.ReferencedAssemblies.Add("System.dll");
cParams.ReferencedAssemblies.Add("System.Xml.dll");
CompilerResults cr =
cProvider.CompileAssemblyFromSource(cParams, sw.GetStringBuilder().ToString());
if (cr.Errors.Count > 0)
{
foreach (CompilerError error in cr.Errors)
{
Console.WriteLine(error.ErrorText);
}
}
Assembly assembly =cr.CompiledAssembly;
byte[] assemblyAsArray = File.ReadAllBytes(cr.PathToAssembly);
...........
//save to database here
File.Delete(@"c:\xxx.dll") => getting error here