diff --git a/msbuild/Xamarin.Localization.MSBuild/MSBStrings.resx b/msbuild/Xamarin.Localization.MSBuild/MSBStrings.resx index 4e9226ebbc08..af09ff9a76dd 100644 --- a/msbuild/Xamarin.Localization.MSBuild/MSBStrings.resx +++ b/msbuild/Xamarin.Localization.MSBuild/MSBStrings.resx @@ -1621,4 +1621,12 @@ {2} and {3}: the different LogicalName metadata + + + Skipping {0} - {1} is empty. + + {0}: the name of the MSBuild task that's being skipped (Copy, GetFullPaths, FilterStaticFrameworks, etc.). + {1}: the name of the property that is empty (SourceFiles, Items, FrameworkToPublish, etc.). + + diff --git a/msbuild/Xamarin.MacDev.Tasks/MsBuildTasks/Copy.cs b/msbuild/Xamarin.MacDev.Tasks/MsBuildTasks/Copy.cs index 3679d861f69e..089e2f16ba09 100644 --- a/msbuild/Xamarin.MacDev.Tasks/MsBuildTasks/Copy.cs +++ b/msbuild/Xamarin.MacDev.Tasks/MsBuildTasks/Copy.cs @@ -1,11 +1,10 @@ extern alias Microsoft_Build_Tasks_Core; -using System; -using System.IO; using System.Linq; using Microsoft.Build.Framework; +using Xamarin.Localization.MSBuild; using Xamarin.Messaging.Build.Client; namespace Microsoft.Build.Tasks { @@ -13,6 +12,11 @@ public class Copy : Microsoft_Build_Tasks_Core::Microsoft.Build.Tasks.Copy { public string SessionId { get; set; } = string.Empty; public override bool Execute () { + if (SourceFiles?.Any () != true) { + Log.LogMessage (MessageImportance.Low, MSBStrings.M7159 /* Skipping {0} - {1} is empty. */, nameof (Copy), nameof (SourceFiles)); + return true; + } + if (!this.ShouldExecuteRemotely (SessionId)) return base.Execute (); diff --git a/msbuild/Xamarin.MacDev.Tasks/Tasks/FilterStaticFrameworks.cs b/msbuild/Xamarin.MacDev.Tasks/Tasks/FilterStaticFrameworks.cs index e9f5c2903ee0..8d4f3bfe5376 100644 --- a/msbuild/Xamarin.MacDev.Tasks/Tasks/FilterStaticFrameworks.cs +++ b/msbuild/Xamarin.MacDev.Tasks/Tasks/FilterStaticFrameworks.cs @@ -22,6 +22,11 @@ public class FilterStaticFrameworks : XamarinTask, ITaskCallback { public override bool Execute () { + if (FrameworkToPublish?.Any () != true) { + Log.LogMessage (MessageImportance.Low, MSBStrings.M7159 /* Skipping {0} - {1} is empty. */, nameof (FilterStaticFrameworks), nameof (FrameworkToPublish)); + return true; + } + if (ShouldExecuteRemotely ()) return new TaskRunner (SessionId, BuildEngine4).RunAsync (this).Result; diff --git a/msbuild/Xamarin.MacDev.Tasks/Tasks/GetFileSystemEntries.cs b/msbuild/Xamarin.MacDev.Tasks/Tasks/GetFileSystemEntries.cs index cd40fe3d4a59..aa00104501cd 100644 --- a/msbuild/Xamarin.MacDev.Tasks/Tasks/GetFileSystemEntries.cs +++ b/msbuild/Xamarin.MacDev.Tasks/Tasks/GetFileSystemEntries.cs @@ -43,6 +43,11 @@ public class GetFileSystemEntries : XamarinTask, ICancelableTask, ITaskCallback public override bool Execute () { + if (DirectoryPath?.Any () != true) { + Log.LogMessage (MessageImportance.Low, MSBStrings.M7159 /* Skipping {0} - {1} is empty. */, nameof (GetFileSystemEntries), nameof (DirectoryPath)); + return true; + } + if (ShouldExecuteRemotely ()) return new TaskRunner (SessionId, BuildEngine4).RunAsync (this).Result; diff --git a/msbuild/Xamarin.MacDev.Tasks/Tasks/GetFullPaths.cs b/msbuild/Xamarin.MacDev.Tasks/Tasks/GetFullPaths.cs index 000b66f2c08a..944e984afb31 100644 --- a/msbuild/Xamarin.MacDev.Tasks/Tasks/GetFullPaths.cs +++ b/msbuild/Xamarin.MacDev.Tasks/Tasks/GetFullPaths.cs @@ -6,7 +6,7 @@ using Microsoft.Build.Framework; using Microsoft.Build.Utilities; -using Xamarin.MacDev.Tasks; +using Xamarin.Localization.MSBuild; using Xamarin.Messaging.Build.Client; #nullable enable @@ -23,6 +23,11 @@ public class GetFullPaths : XamarinTask, ICancelableTask, ITaskCallback { public override bool Execute () { + if (Items?.Any () != true) { + Log.LogMessage (MessageImportance.Low, MSBStrings.M7159 /* Skipping {0} - {1} is empty. */, nameof (GetFullPaths), nameof (Items)); + return true; + } + if (ShouldExecuteRemotely ()) return new TaskRunner (SessionId, BuildEngine4).RunAsync (this).Result;