diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/CopyIfChanged.cs b/src/Xamarin.Android.Build.Tasks/Tasks/CopyIfChanged.cs index 69670c3c798..edf2af27c48 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/CopyIfChanged.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/CopyIfChanged.cs @@ -58,6 +58,8 @@ public override bool Execute () modifiedFiles.Add (new TaskItem (dest)); if (KeepDestinationDates) MonoAndroidHelper.SetLastAccessAndWriteTimeUtc (dest, dstmodifiedDate, Log); + else + MonoAndroidHelper.SetLastAccessAndWriteTimeUtc (dest, DateTime.UtcNow, Log); } ModifiedFiles = modifiedFiles.ToArray (); diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs index 42ca4f2afdf..c217bad3ee3 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs @@ -120,6 +120,31 @@ public void FooMethod () { } } + [Test] + public void BuildPropsBreaksConvertResourcesCases () + { + var proj = new XamarinAndroidApplicationProject () { + AndroidResources = { + new AndroidItem.AndroidResource (() => "Resources\\drawable\\IMALLCAPS.png") { + BinaryContent = () => XamarinAndroidApplicationProject.icon_binary_mdpi, + }, + new AndroidItem.AndroidResource ("Resources\\layout\\test.axml") { + TextContent = () => { + return "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ImageView xmlns:android=\"http://schemas.android.com/apk/res/android\" android:src=\"@drawable/IMALLCAPS\" />"; + } + } + } + }; + using (var b = CreateApkBuilder (Path.Combine ("temp", TestName))) { + Assert.IsTrue (b.Build (proj), "first build should have succeeded."); + //Invalidate build.props with newer timestamp, you could also modify anything in @(_PropertyCacheItems) + var props = b.Output.GetIntermediaryPath("build.props"); + File.SetLastWriteTimeUtc(props, DateTime.UtcNow); + File.SetLastAccessTimeUtc(props, DateTime.UtcNow); + Assert.IsTrue (b.Build (proj), "second build should have succeeded."); + } + } + [Test] public void CheckTimestamps () {