diff --git a/src/Framework/FileUtilities_TempFiles.cs b/src/Framework/FileUtilities_TempFiles.cs index 956bb8ad882..e3277601bf8 100644 --- a/src/Framework/FileUtilities_TempFiles.cs +++ b/src/Framework/FileUtilities_TempFiles.cs @@ -35,6 +35,15 @@ private static void RegisterCleanupOnExit(string pathToCleanup) { AppDomain.CurrentDomain.ProcessExit += (_, _) => { + // ToolTask creates response files (.rsp) in this directory via GetTemporaryFileName + // and batch files (.cmd/.sh) via FileUtilities.GetTemporaryFile(".cmd"/".sh"). + // MSBUILDPRESERVETOOLTEMPFILES=1 tells ToolTask.DeleteTempFile() to keep them for + // post-build inspection, but that is ineffective if we delete the entire directory here on exit. + if (string.Equals(Environment.GetEnvironmentVariable("MSBUILDPRESERVETOOLTEMPFILES"), "1", StringComparison.Ordinal)) + { + return; + } + try { if (Directory.Exists(pathToCleanup))