private static IExportProviderFactory CreateRemoteHostExportProviderFactory() { var configuration = CompositionConfiguration.Create(ExportProviderCache.GetOrCreateAssemblyCatalog(RoslynServices.RemoteHostAssemblies).WithCompositionService()); var runtimeComposition = RuntimeComposition.CreateRuntimeComposition(configuration); return(runtimeComposition.CreateExportProviderFactory()); }
private MefHostServices CreateMefHostServices(IEnumerable <Assembly> assemblies, bool requestingDefaultAssemblies) { if (requestingDefaultAssemblies && ExportProviderCache.ExportProviderForCleanup != null) { if (_hostServices == null) { var hostServices = new ExportProviderMefHostServices(ExportProviderCache.ExportProviderForCleanup); Interlocked.CompareExchange(ref _hostServices, hostServices, null); } return(_hostServices); } var catalog = ExportProviderCache.GetOrCreateAssemblyCatalog(assemblies); Interlocked.CompareExchange( ref _hostServices, new ExportProviderMefHostServices(ExportProviderCache.GetOrCreateExportProviderFactory(catalog).CreateExportProvider()), null); return(_hostServices); }