private void SolutionOrFolder_Opened(object sender, HostOpenedEventArgs e) { projectType = e.ProjectType; if (projectType == ProjectType.Folder) { return; } if (_state == 0) { lock (locker) { if (_state == 0) { try { using (Log.CriticalOperation($"{nameof(SolutionOrFolder_Opened)}")) { Microsoft.VisualStudio.Shell.ThreadHelper.JoinableTaskFactory.RunAsync(async() => { // there's a bug in the MS LanguageServer code that creates // an object disposed exception on the rpc object when // a folder is opened after a solution (and the solutionClose triggered a StopAsync) // so for now, solution closing won't trigger a LanguageServer Client Stop, it will stop/start // when _another_ solution has opened await RestartAsync(); }); } } catch (Exception ex) { Log.Error(ex, nameof(SolutionOrFolder_Opened)); } } } } }
private void SolutionOrFolder_Opened(object sender, HostOpenedEventArgs e) { try { if (Log.IsDebugEnabled()) { Log.Debug($"{nameof(SolutionOrFolder_Opened)} ProjectType={e.ProjectType} FileName={e.FileName}"); } else { Log.Information($"{nameof(SolutionOrFolder_Opened)} ProjectType={e.ProjectType}"); } var sessionService = _componentModel?.GetService <ISessionService>(); if (sessionService == null) { Log.IsNull(nameof(sessionService)); return; } sessionService.SolutionName = e.FileName; sessionService.ProjectType = e.ProjectType; } catch (Exception ex) { Log.Error(ex, nameof(SolutionOrFolder_Opened)); } }