コード例 #1
0
        internal async Task <MonoDevelopWorkspace> CreateEmptyWorkspace()
        {
            var ws = new MonoDevelopWorkspace(compositionManager.HostServices, null, this);
            await ws.Initialize();

            return(ws);
        }
コード例 #2
0
        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> ();
        }
コード例 #3
0
        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);
            }
        }