/// <inheritdoc /> /// <summary> /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. /// </summary> public void Dispose() { if (Target != null) { Target.QueryCurrentStartupProjects -= Solution_QueryCurrentStartupProjects; Target.QueryStartupProjects -= Solution_QueryStartupProjects; Target.QueryConfiguration -= Solution_QueryConfiguration; Target.ParseConfiguration -= Solution_ParseConfiguration; Target.CurrentProfileChanged -= Solution_CurrentProfileChanged; Target.Opened -= Solution_Opened; Target.ClosingProject -= Solution_ClosingProject; Target.OpenedProject -= Solution_OpenedProject; Target.ConfigurationChanged -= Solution_ConfigurationChanged; } if (_configurationFileTrackers != null) { _configurationFileTrackers.ForEach(s => { s.FileChanged -= ConfigurationFileTracker_FileChanged; s.Stop(); }); _configurationFileTrackers.Clear(); } _projectCache?.Dispose(); }