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);
        }