From f9a90231a365e7f069df66398c67cebf2a226878 Mon Sep 17 00:00:00 2001 From: Lubomir Tetak <50887170+ltetak@users.noreply.github.com> Date: Thu, 2 May 2024 09:11:42 +0200 Subject: [PATCH] CompileAvaloniaXamlTask - handle no-pdb compilations (#15509) * CompileAvaloniaXamlTask - handle no-pdb compilations * handle PDBs separately --- .../CompileAvaloniaXamlTask.cs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Build.Tasks/CompileAvaloniaXamlTask.cs b/src/Avalonia.Build.Tasks/CompileAvaloniaXamlTask.cs index 8cd444d30b2..7ad2ffba5d5 100644 --- a/src/Avalonia.Build.Tasks/CompileAvaloniaXamlTask.cs +++ b/src/Avalonia.Build.Tasks/CompileAvaloniaXamlTask.cs @@ -38,7 +38,7 @@ public bool Execute() { // To simplify incremental build checks, copy the input files to the expected output locations even if the Xaml compiler didn't do anything. CopyAndTouch(AssemblyFile.ItemSpec, outputPath); - CopyAndTouch(Path.ChangeExtension(AssemblyFile.ItemSpec, ".pdb"), Path.ChangeExtension(outputPath, ".pdb")); + CopyAndTouch(Path.ChangeExtension(AssemblyFile.ItemSpec, ".pdb"), Path.ChangeExtension(outputPath, ".pdb"), false); if (!string.IsNullOrEmpty(refOutputPath)) { @@ -49,8 +49,18 @@ public bool Execute() return res.Success; } - private static void CopyAndTouch(string source, string destination) + private static void CopyAndTouch(string source, string destination, bool shouldExist = true) { + if (!File.Exists(source)) + { + if (shouldExist) + { + throw new FileNotFoundException($"Could not copy file '{source}'. File does not exist."); + } + + return; + } + File.Copy(source, destination, overwrite: true); File.SetLastWriteTimeUtc(destination, DateTime.UtcNow); }