diff options
author | Matt Ward <ward.matt@gmail.com> | 2018-04-13 16:39:32 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-13 16:39:32 +0300 |
commit | e72dcdcd3b682df59f578e714634a81f7c90af25 (patch) | |
tree | ada359550d249454252da68406a2c7bd954b60b2 /main/src/core | |
parent | c6a5590bb2b09821d305ae4826997f5d7ef2d016 (diff) | |
parent | c473932ff8970765cf3f548e1afe6925a4c5a880 (diff) |
Merge pull request #4541 from mono/xamarin-mac-resolve-facades-directory
[Core] Support facade assemblies from a custom location
Diffstat (limited to 'main/src/core')
-rw-r--r-- | main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs | 35 | ||||
-rw-r--r-- | main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProjectExtension.cs | 5 |
2 files changed, 32 insertions, 8 deletions
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs index 07b2ca1735..8186af470c 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs @@ -972,19 +972,33 @@ namespace MonoDevelop.Projects } if (addFacadeAssemblies) { - var runtime = TargetRuntime ?? MonoDevelop.Core.Runtime.SystemAssemblyService.DefaultRuntime; - var facades = runtime.FindFacadeAssembliesForPCL (TargetFramework); - foreach (var facade in facades) { - if (!File.Exists (facade)) - continue; - var ar = new AssemblyReference (facade); - if (!result.Contains (ar)) - result.Add (ar); + var facades = await ProjectExtension.OnGetFacadeAssemblies (); + if (facades != null) { + foreach (var facade in facades) { + if (!result.Contains (facade)) + result.Add (facade); + } } } return result; } + internal protected virtual Task<List<AssemblyReference>> OnGetFacadeAssemblies () + { + List<AssemblyReference> result = null; + var runtime = TargetRuntime ?? Runtime.SystemAssemblyService.DefaultRuntime; + var facades = runtime.FindFacadeAssembliesForPCL (TargetFramework); + foreach (var facade in facades) { + if (!File.Exists (facade)) + continue; + if (result == null) + result = new List<AssemblyReference> (); + var ar = new AssemblyReference (facade); + result.Add (ar); + } + return Task.FromResult (result); + } + AsyncCriticalSection referenceCacheLock = new AsyncCriticalSection (); ImmutableDictionary<string, List<AssemblyReference>> referenceCache = ImmutableDictionary<string, List<AssemblyReference>>.Empty; bool referenceCacheNeedsRefresh; @@ -2030,6 +2044,11 @@ namespace MonoDevelop.Projects return Project.OnGetReferencedAssemblyProjects (configuration); } + internal protected override Task<List<AssemblyReference>> OnGetFacadeAssemblies () + { + return Project.OnGetFacadeAssemblies (); + } + #pragma warning disable 672 // Member overrides obsolete member internal protected override ExecutionCommand OnCreateExecutionCommand (ConfigurationSelector configSel, DotNetProjectConfiguration configuration) { diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProjectExtension.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProjectExtension.cs index 3737d95c64..62106c0508 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProjectExtension.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProjectExtension.cs @@ -88,6 +88,11 @@ namespace MonoDevelop.Projects return next.OnGetReferencedAssemblyProjects (configuration); } + internal protected virtual Task<List<AssemblyReference>> OnGetFacadeAssemblies () + { + return next.OnGetFacadeAssemblies (); + } + [Obsolete("User overload that takes a RunConfiguration")] internal protected virtual ExecutionCommand OnCreateExecutionCommand (ConfigurationSelector configSel, DotNetProjectConfiguration configuration) { |