private static IExportProviderFactory CreateEditorExportProviderFactory() { AssemblyLoader.EnsureLoaded( "Microsoft.VisualStudio.VsInteractiveWindow", "Microsoft.VisualStudio.Editor.Implementation", "Microsoft.VisualStudio.Platform.VSEditor", "Microsoft.PythonTools.VSInterpreters"); var catalog = MefCatalogFactory.CreateAssembliesCatalog( "Microsoft.VisualStudio.CoreUtility", "Microsoft.VisualStudio.Text.Data", "Microsoft.VisualStudio.Text.Logic", "Microsoft.VisualStudio.Text.UI", "Microsoft.VisualStudio.Text.UI.Wpf", "Microsoft.VisualStudio.InteractiveWindow", "Microsoft.VisualStudio.VsInteractiveWindow", "Microsoft.VisualStudio.Editor", "Microsoft.VisualStudio.Language.Intellisense", "Microsoft.VisualStudio.Platform.VSEditor", "Microsoft.PythonTools", "Microsoft.PythonTools.VSInterpreters") .WithCompositionService() .WithServiceProvider() .AddJoinableTaskContext() .AddType <MockTextUndoHistoryRegistry>() .AddTypesFromAssembly("Microsoft.VisualStudio.Editor.Implementation", "Microsoft.VisualStudio.Editor.Implementation.LoggingServiceInternal", "Microsoft.VisualStudio.Editor.Implementation.PeekResultFactory", "Microsoft.VisualStudio.Editor.Implementation.TipManager", "Microsoft.VisualStudio.Editor.Implementation.VisualStudioWaitIndicator", "Microsoft.VisualStudio.Editor.Implementation.VsEditorAdaptersFactoryService"); var configuration = CompositionConfiguration.Create(catalog); var runtimeConfiguration = RuntimeComposition.CreateRuntimeComposition(configuration); return(runtimeConfiguration.CreateExportProviderFactory()); }
private static CachedVsInfo CreateCachedVsInfo() { var runningLoc = Path.GetDirectoryName(typeof(MockVs).Assembly.Location); // load all of the available DLLs that depend upon TestUtilities into our catalog var assemblies = new List <Assembly>(); var packageTypes = new List <Type>(); var excludedAssemblies = new HashSet <string>(new string[] { "Microsoft.VisualStudio.Text.Internal.dll", "Microsoft.VisualStudio.Utilities.dll", "Microsoft.VisualStudio.Validation.dll", "Microsoft.VisualStudio.Workspace.dll", "Microsoft.VisualStudio.Debugger.DebugAdapterHost.Interfaces.dll", "TestUtilities" }, StringComparer.OrdinalIgnoreCase); foreach (var file in Directory.GetFiles(runningLoc, "*.dll")) { if (excludedAssemblies.Contains(Path.GetFileName(file))) { continue; } Assembly asm; try { asm = Assembly.Load(Path.GetFileNameWithoutExtension(file)); } catch { continue; } Console.WriteLine("Including {0}", file); try { foreach (var type in asm.GetTypes()) { if (type.IsDefined(typeof(PackageRegistrationAttribute), false)) { packageTypes.Add(type); } } assemblies.Add(asm); } catch (TypeInitializationException tix) { Console.WriteLine(tix); } catch (ReflectionTypeLoadException tlx) { Console.WriteLine(tlx); foreach (var ex in tlx.LoaderExceptions) { Console.WriteLine(ex); } } catch (IOException iox) { Console.WriteLine(iox); } } var catalog = MefCatalogFactory.CreateAssembliesCatalog( "Microsoft.VisualStudio.CoreUtility", "Microsoft.VisualStudio.Text.Data", "Microsoft.VisualStudio.Text.Logic", "Microsoft.VisualStudio.Text.UI", "Microsoft.VisualStudio.Text.UI.Wpf", "Microsoft.VisualStudio.InteractiveWindow", "Microsoft.VisualStudio.VsInteractiveWindow", "Microsoft.VisualStudio.Editor", "Microsoft.VisualStudio.Language.Intellisense", "Microsoft.PythonTools", "Microsoft.PythonTools.TestAdapter", "Microsoft.PythonTools.VSInterpreters", "MockVsTests", "PythonToolsMockTests") .WithCompositionService() .AddType <MockTextUndoHistoryRegistry>() .AddType <MockContentTypeRegistryService>() .AddType <MockClassificationTypeRegistryService>(); return(new CachedVsInfo(catalog, packageTypes)); }