static DebugUtils() { string environmentDebugPath = FileUtilities.TrimAndStripAnyQuotes(Environment.GetEnvironmentVariable("MSBUILDDEBUGPATH")); string debugDirectory = environmentDebugPath; if (Traits.Instance.DebugEngine) { if (!string.IsNullOrWhiteSpace(debugDirectory) && FileUtilities.CanWriteToDirectory(debugDirectory)) { // Debug directory is writable; no need for fallbacks } else if (FileUtilities.CanWriteToDirectory(Directory.GetCurrentDirectory())) { debugDirectory = Path.Combine(Directory.GetCurrentDirectory(), "MSBuild_Logs"); } else { debugDirectory = Path.Combine(Path.GetTempPath(), "MSBuild_Logs"); } // Out of proc nodes do not know the startup directory so set the environment variable for them. if (string.IsNullOrWhiteSpace(environmentDebugPath)) { Environment.SetEnvironmentVariable("MSBUILDDEBUGPATH", debugDirectory); } } if (debugDirectory is not null) { FileUtilities.EnsureDirectoryExists(debugDirectory); } DebugPath = debugDirectory; }