我有一个在C:\Users\xxxx\AppData\Local\Temp上生成临时文件的C#应用程序。这些临时文件是由于使用Microsoft.CSharp.CSharpCodeProvider().CompileAssemblyFromSource而生成的。对于每个动态程序集,都会生成以下文件(.tmp、.out、.err、.dll、.pdb、.cmdline、.cs)。我试着用
result.TempFiles.KeepFiles = false;但这并不是自动删除这些临时文件。如何在c#应用程序执行结束之前删除这些临时文件?
发布于 2015-06-11 15:04:14
KeepFiles似乎只是一个flag
集合中的每个临时文件都具有相关联的保留文件标志,该标志基于每个文件确定是保留还是删除该文件。文件在编译完成时会根据其关联的保留文件值自动保留或删除。但是,在编译完成后,可以通过设置deleted并调用方法来释放保留的文件。这将导致所有文件被删除。
将需要调用TempFileCollection.Delete或使用TempFileCollection.Dispose()
使用完集合后:
result.TempFiles.Delete();或
result.TempFiles.Dispose();它们是等价的。
发布于 2015-06-12 20:31:45
如果您根本不想生成这些临时文件,那么在使用/调用CompileAssemblyFromSource之前使用CompilerParameters.GenerateInMemory = true;
https://stackoverflow.com/questions/30773707
复制相似问题