Skip to content

Commit d7752a1

Browse files
committed
[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.
1 parent 2745b6a commit d7752a1

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

src/Xamarin.Android.Build.Tasks/Tasks/GetFilesThatExist.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,19 @@ public class GetFilesThatExist : Task
1515
[Required]
1616
public ITaskItem[] Files { get; set; }
1717

18+
public ITaskItem [] IgnoreFiles { get; set; }
19+
1820
[Output]
1921
public ITaskItem[] FilesThatExist { get; set; }
2022

2123
public override bool Execute ()
2224
{
2325
Log.LogDebugMessage ("GetFilesThatExist Task");
2426
Log.LogDebugTaskItems (" Files", Files);
27+
Log.LogDebugTaskItems (" IgnoreFiles", IgnoreFiles);
2528

26-
FilesThatExist = Files.Where (p => File.Exists (p.ItemSpec)).ToArray ();
29+
FilesThatExist = Files.Where (p => File.Exists (p.ItemSpec) &&
30+
(!IgnoreFiles?.Contains (p, TaskItemComparer.DefaultComparer) ?? true)).ToArray ();
2731

2832
Log.LogDebugTaskItems (" [Output] FilesThatExist", FilesThatExist);
2933

src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1497,9 +1497,12 @@ because xbuild doesn't support framework reference assemblies.
14971497

14981498
<Target Name="_CollectMdbFiles"
14991499
Inputs="@(ResolvedAssemblies->'%(RootDir)%(Directory)%(Filename)%(Extension)')"
1500-
Outputs="@(ResolvedAssemblies->'%(RootDir)%(Directory)%(Filename)%(Extension).mdb')">
1500+
Outputs="@(ResolvedAssemblies->'%(RootDir)%(Directory)%(Filename)%(Extension).mdb')"
1501+
DependsOnTargets="_CollectPdbFiles">
15011502
<GetFilesThatExist
1502-
Files="@(ResolvedAssemblies->'%(RootDir)%(Directory)%(Filename)%(Extension).mdb')">
1503+
Files="@(ResolvedAssemblies->'%(RootDir)%(Directory)%(Filename)%(Extension).mdb')"
1504+
IgnoreFiles="@(_ResolvedPortablePdbFiles->'%(RootDir)%(Directory)%(Filename).dll.mdb')"
1505+
>
15031506
<Output TaskParameter="FilesThatExist" ItemName="_ResolvedMdbFiles" />
15041507
</GetFilesThatExist>
15051508
</Target>

0 commit comments

Comments
 (0)