diff --git a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets
index a90c77dda8..5e43e3ee7f 100644
--- a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets
+++ b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets
@@ -441,6 +441,7 @@ Copyright (C) 2014 Xamarin. All rights reserved.
Prefix="xammac"
NoOverwrite="@(_BundleResourceWithLogicalName)"
IntermediateOutputPath="$(IntermediateOutputPath)"
+ TargetFrameworkDirectory="$(TargetFrameworkDirectory)"
ReferencedLibraries="@(ResolvedFiles)">
diff --git a/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/UnpackLibraryResourcesTaskBase.cs b/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/UnpackLibraryResourcesTaskBase.cs
index ab19ba3d26..87d3772eb6 100644
--- a/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/UnpackLibraryResourcesTaskBase.cs
+++ b/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/UnpackLibraryResourcesTaskBase.cs
@@ -26,6 +26,9 @@ namespace Xamarin.MacDev.Tasks
[Required]
public ITaskItem[] ReferencedLibraries { get; set; }
+ [Required]
+ public ITaskItem[] TargetFrameworkDirectory { get; set; }
+
#endregion
#region Outputs
@@ -42,6 +45,7 @@ namespace Xamarin.MacDev.Tasks
Log.LogTaskProperty ("IntermediateOutputPath", IntermediateOutputPath);
Log.LogTaskProperty ("NoOverwrite", NoOverwrite);
Log.LogTaskProperty ("ReferencedLibraries", ReferencedLibraries);
+ Log.LogTaskProperty ("TargetFrameworkDirectory", TargetFrameworkDirectory);
// TODO: give each assembly its own intermediate output directory
// TODO: use list file to avoid re-extracting assemblies but allow FileWrites to work
@@ -49,7 +53,9 @@ namespace Xamarin.MacDev.Tasks
HashSet ignore = null;
foreach (var asm in ReferencedLibraries) {
- if (asm.GetMetadata ("ResolvedFrom") == "{TargetFrameworkDirectory}") {
+ // mscorlib.dll was not coming out with ResolvedFrom == {TargetFrameworkDirectory}
+ // and what we really care is where it comes from, not how it was resolved
+ if (IsFrameworkAssembly (asm)) {
Log.LogMessage (MessageImportance.Low, " Skipping framework assembly: {0}", asm.ItemSpec);
} else {
var extracted = ExtractContentAssembly (asm.ItemSpec, IntermediateOutputPath);
@@ -83,6 +89,16 @@ namespace Xamarin.MacDev.Tasks
return !Log.HasLoggedErrors;
}
+ bool IsFrameworkAssembly (ITaskItem asm)
+ {
+ var asm_path = asm.GetMetadata ("FullPath");
+ foreach (var dir in TargetFrameworkDirectory) {
+ if (asm_path.StartsWith (dir.GetMetadata ("FullPath"), StringComparison.OrdinalIgnoreCase))
+ return true;
+ }
+ return false;
+ }
+
IEnumerable ExtractContentAssembly (string assembly, string intermediatePath)
{
Log.LogMessage (MessageImportance.Low, " Inspecting assembly: {0}", assembly);
diff --git a/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets b/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets
index 612c849076..10cc461148 100644
--- a/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets
+++ b/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets
@@ -543,6 +543,7 @@ Copyright (C) 2013-2016 Xamarin. All rights reserved.
Prefix="monotouch"
NoOverwrite="@(_BundleResourceWithLogicalName)"
IntermediateOutputPath="$(DeviceSpecificIntermediateOutputPath)"
+ TargetFrameworkDirectory="$(TargetFrameworkDirectory)"
ReferencedLibraries="@(ReferencePath);@(ReferenceDependencyPaths)">