簡體   English   中英

刪除在 c# 應用程序中使用 CompileAssemblyFromSource 生成的臨時文件

[英]Delete Temp files generated by using CompileAssemblyFromSource in c# application

我有一個 C# 應用程序,它在C:\\Users\\xxxx\\AppData\\Local\\Temp生成臨時文件。 這些臨時文件是使用Microsoft.CSharp.CSharpCodeProvider().CompileAssemblyFromSource 對於每個動態程序集,會生成以下文件(.tmp、.out、.err、.dll、.pdb、.cmdline、.cs)。 我試着用

result.TempFiles.KeepFiles = false;

但這不會自動刪除這些臨時文件。 如何在 c# 應用程序執行結束之前擺脫這些臨時文件?

KeepFiles似乎只是一個標志

集合中的每個臨時文件都有一個關聯的保留文件標志,該標志根據每個文件確定是保留還是刪除該文件。 編譯完成后,文件會根據相關的保留文件值自動保留或刪除。 但是,編譯完成后,可以通過將KeepFiles設置為 false 並調用 Delete 方法來釋放保留的文件 這將導致所有文件被刪除。

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

使用完集合后:

result.TempFiles.Delete();

或者

result.TempFiles.Dispose();

哪些是等價的。

如果您根本不想生成這些臨時文件,請使用CompilerParameters.GenerateInMemory = true; 在使用/調用CompileAssemblyFromSource之前

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM