internal static ErrorListManager RegisterProject(Microsoft.VisualStudio.Shell.IErrorList errorList, XSharpProjectNode project) { lock (_gate) { if (_provider == null) { _errorList = errorList; _manager = errorList.TableControl.Manager; _provider = new ErrorListProvider(_manager); _errorList.PropertyChanged += _errorList_PropertyChanged; } } if (!_projects.ContainsKey(project.ProjectIDGuid)) { var entry = new ErrorListManager(project); entry.Factory = new ErrorsFactory(_provider, project.ProjectIDGuid); _provider.AddErrorListFactory(entry.Factory); _projects.Add(project.ProjectIDGuid, entry); return(entry); } return(_projects[project.ProjectIDGuid]); }