diff --git a/msbuild/Xamarin.MacDev.Tasks/Tasks/ResolveNativeReferencesBase.cs b/msbuild/Xamarin.MacDev.Tasks/Tasks/ResolveNativeReferencesBase.cs index a66ce9a297..958d795be6 100644 --- a/msbuild/Xamarin.MacDev.Tasks/Tasks/ResolveNativeReferencesBase.cs +++ b/msbuild/Xamarin.MacDev.Tasks/Tasks/ResolveNativeReferencesBase.cs @@ -524,6 +524,9 @@ namespace Xamarin.MacDev.Tasks { return false; } - public IEnumerable GetAdditionalItemsToBeCopied () => Enumerable.Empty (); + public IEnumerable GetAdditionalItemsToBeCopied () + { + return CreateItemsForAllFilesRecursively (NativeReferences); + } } } diff --git a/msbuild/Xamarin.MacDev.Tasks/Tasks/XamarinTask.cs b/msbuild/Xamarin.MacDev.Tasks/Tasks/XamarinTask.cs index d9e018163b..92da581142 100644 --- a/msbuild/Xamarin.MacDev.Tasks/Tasks/XamarinTask.cs +++ b/msbuild/Xamarin.MacDev.Tasks/Tasks/XamarinTask.cs @@ -1,5 +1,7 @@ using System; using System.Collections.Generic; +using System.IO; +using System.Linq; using Microsoft.Build.Framework; using Microsoft.Build.Tasks; @@ -217,5 +219,25 @@ namespace Xamarin.MacDev.Tasks { foundInMetadata = false; return fallbackValue; } + + protected IEnumerable CreateItemsForAllFilesRecursively (IEnumerable? directories) + { + if (directories is null) + yield break; + + foreach (var dir in directories) { + // Don't try to find files if we don't have a directory in the first place (or it doesn't exist). + if (!Directory.Exists (dir)) + continue; + + foreach (var file in Directory.EnumerateFiles (dir, "*", SearchOption.AllDirectories)) + yield return new TaskItem (file); + } + } + + protected IEnumerable CreateItemsForAllFilesRecursively (IEnumerable? directories) + { + return CreateItemsForAllFilesRecursively (directories?.Select (v => v.ItemSpec)); + } } }