From d7752a1b9c4d2c1559a7d63a19b859dd8b891c9f Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Fri, 2 Jun 2017 16:12:16 +0100 Subject: [PATCH] [Xamarin.Android.Build.Tasks] Xamarin.Android "Clean" target does not remove old .mdb files for library projects after Xamarin 15.2 release (Mono 5.0), leading to out-of-date debugging symbols for Fast Deployment mode Context https://bugzilla.xamarin.com/show_bug.cgi?id=57087 The latest mono has now switched over to using csc for its compiler. So we no longer generate .mdb files but instead generate portable .pdb files. Our current system will favour mdb over ppdb. So this commit adds a check so that we will ignore .mdb files if we have a valid ppdb file present. While this does not fix the PCL bug mentioned in 57087, it will prevent those stale .mdb files making it into the final package or .__override__ directory. --- src/Xamarin.Android.Build.Tasks/Tasks/GetFilesThatExist.cs | 6 +++++- .../Xamarin.Android.Common.targets | 7 +++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/GetFilesThatExist.cs b/src/Xamarin.Android.Build.Tasks/Tasks/GetFilesThatExist.cs index 285e310365a..f72c89d9c3d 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/GetFilesThatExist.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/GetFilesThatExist.cs @@ -15,6 +15,8 @@ public class GetFilesThatExist : Task [Required] public ITaskItem[] Files { get; set; } + public ITaskItem [] IgnoreFiles { get; set; } + [Output] public ITaskItem[] FilesThatExist { get; set; } @@ -22,8 +24,10 @@ public override bool Execute () { Log.LogDebugMessage ("GetFilesThatExist Task"); Log.LogDebugTaskItems (" Files", Files); + Log.LogDebugTaskItems (" IgnoreFiles", IgnoreFiles); - FilesThatExist = Files.Where (p => File.Exists (p.ItemSpec)).ToArray (); + FilesThatExist = Files.Where (p => File.Exists (p.ItemSpec) && + (!IgnoreFiles?.Contains (p, TaskItemComparer.DefaultComparer) ?? true)).ToArray (); Log.LogDebugTaskItems (" [Output] FilesThatExist", FilesThatExist); diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets index ec97461dc94..1c4d1b1d1ac 100755 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets @@ -1497,9 +1497,12 @@ because xbuild doesn't support framework reference assemblies. + Outputs="@(ResolvedAssemblies->'%(RootDir)%(Directory)%(Filename)%(Extension).mdb')" + DependsOnTargets="_CollectPdbFiles"> + Files="@(ResolvedAssemblies->'%(RootDir)%(Directory)%(Filename)%(Extension).mdb')" + IgnoreFiles="@(_ResolvedPortablePdbFiles->'%(RootDir)%(Directory)%(Filename).dll.mdb')" + >