internal async Task <MonoDevelopWorkspace> CreateEmptyWorkspace() { var ws = new MonoDevelopWorkspace(compositionManager.HostServices, null, this); await ws.Initialize(); return(ws); }
protected override async Task OnInitialize(ServiceProvider serviceProvider) { IntitializeTrackedProjectHandling(); serviceProvider.WhenServiceInitialized <CompositionManager> (s => { miscellaneousFilesWorkspace = CompositionManager.Instance.GetExportedValue <MiscellaneousFilesWorkspace> (); serviceProvider.WhenServiceInitialized <DocumentManager> (dm => { documentManager = dm; }); }); serviceProvider.WhenServiceInitialized <RootWorkspace> (s => { rootWorkspace = s; rootWorkspace.ActiveConfigurationChanged += HandleActiveConfigurationChanged; }); RoslynServices.RoslynService.Initialize(); CleanupCache(); #pragma warning disable CS0618, 612 // Type or member is obsolete parsers = AddinManager.GetExtensionNodes <TypeSystemParserNode> ("/MonoDevelop/TypeSystem/Parser"); bool initialLoad = true; AddinManager.AddExtensionNodeHandler("/MonoDevelop/TypeSystem/Parser", delegate(object sender, ExtensionNodeEventArgs args) { //refresh entire list to respect insertbefore/insertafter ordering if (!initialLoad) { parsers = AddinManager.GetExtensionNodes <TypeSystemParserNode> ("/MonoDevelop/TypeSystem/Parser"); } }); #pragma warning restore CS0618, 612 // Type or member is obsolete initialLoad = false; try { compositionManager = await serviceProvider.GetService <CompositionManager> ().ConfigureAwait(false); emptyWorkspace = new MonoDevelopWorkspace(compositionManager.HostServices, null, this); await emptyWorkspace.Initialize().ConfigureAwait(false); } catch (Exception e) { LoggingService.LogFatalError("Can't create roslyn workspace", e); } FileService.FileChanged += FileService_FileChanged; FileService.FileRemoved += FileService_FileRemoved; desktopService = await serviceProvider.GetService <DesktopService> (); await serviceProvider.GetService <HelpService> (); }
async Task CreateWorkspaces(WorkspaceItem item, List <MonoDevelopWorkspace> result) { if (item is MonoDevelop.Projects.Workspace ws) { foreach (var wsItem in ws.Items) { await CreateWorkspaces(wsItem, result).ConfigureAwait(false); } ws.ItemAdded += OnWorkspaceItemAdded; ws.ItemRemoved += OnWorkspaceItemRemoved; } else if (item is MonoDevelop.Projects.Solution solution) { var workspace = new MonoDevelopWorkspace(compositionManager.HostServices, solution, this); await workspace.Initialize().ConfigureAwait(false); lock (workspaceLock) workspaces = workspaces.Add(workspace); solution.SolutionItemAdded += OnSolutionItemAdded; solution.SolutionItemRemoved += OnSolutionItemRemoved; result.Add(workspace); } }