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

本文关键字:CompileAssemblyFromSource 临时文件 应用程序 删除 | 更新日期: 2023-09-27 17:55:20

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

result.TempFiles.KeepFiles = false;

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

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

KeepFiles似乎只是一个标志:

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

需要调用TempFileCollection.Delete或使用TempFileCollection.Dispose()

使用完集合后:

result.TempFiles.Delete();

result.TempFiles.Dispose();

这是等效的。

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

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

相关文章:
  • 没有找到相关文章