internal void TryDisconnectExistingDeferredProject(IVsHierarchy hierarchy, string projectName) { var projectPath = AbstractLegacyProject.GetProjectFilePath(hierarchy); var projectId = GetOrCreateProjectIdForPath(projectPath, projectName); // If we created a project for this while in deferred project load mode, let's close it // now that we're being asked to make a "real" project for it, so that we'll prefer the // "real" project if (VisualStudioWorkspaceImpl.IsDeferredSolutionLoadEnabled(_serviceProvider)) { var existingProject = GetProject(projectId); if (existingProject != null) { Debug.Assert(existingProject is IWorkspaceProjectContext); existingProject.Disconnect(); } } }
public void OnBeforeCloseSolution() { AssertIsForeground(); _solutionIsClosing = true; foreach (var p in this.ImmutableProjects) { p.StopPushingToWorkspaceHosts(); } _solutionLoadComplete = false; _deferredLoadWasEnabledForLastSolution = VisualStudioWorkspaceImpl.IsDeferredSolutionLoadEnabled(_serviceProvider); // Cancel any background solution parsing. NOTE: This means that work needs to // check the token periodically, and whenever resuming from an "await" _solutionParsingCancellationTokenSource.Cancel(); _solutionParsingCancellationTokenSource = new CancellationTokenSource(); }