删除在c#应用程序中使用CompileAssemblyFromSource生成的临时文件

时间:2015-06-11 06:56:30

标签: c# asp.net

我有一个C#应用程序,可以在C:\Users\xxxx\AppData\Local\Temp生成临时文件。使用Microsoft.CSharp.CSharpCodeProvider().CompileAssemblyFromSource生成这些临时文件。对于每个动态程序集,将生成以下文件(.tmp,.out,.err,.dll,.pdb,.cmdline,.cs)。我试着用

result.TempFiles.KeepFiles = false;

但这并不是自动删除这些临时文件。如何在c#应用程序执行结束之前删除这些临时文件?

2 个答案:

答案 0 :(得分:1)

KeepFiles似乎只是flag

  

每个临时文件   在集合中有一个关联的保持文件标志,用于确定,打开   每个文件,无论是保留还是删除该文件。档   在编译完成时自动保留或删除   基于其关联的保存文件值。但是,编译后   完成后,可以通过设置 KeepFiles来释放保存的文件   false并调用Delete方法。这将导致所有文件   被删除。

是否需要致电TempFileCollection.Delete或使用TempFileCollection.Dispose()

当您使用该集合时:

result.TempFiles.Delete();

或者

result.TempFiles.Dispose();

这相当于。

答案 1 :(得分:0)

如果您根本不想生成这些临时文件,请在使用/调用CompilerParameters.GenerateInMemory = true;之前使用CompileAssemblyFromSource

请参阅https://msdn.microsoft.com/en-us/library/system.codedom.compiler.compilerparameters.generateinmemory(v=vs.110).aspx