public static void UnloadOrReloadProjects(UnReLoad unReLoad, IEnumerable<string> projects, Action<string> cout) { var hash = HashHelper.MakeHashWithOriginal(projects, cout); var parameters = CreateParams(cout); ExecuteOnProjectsInSolution(project => { var upperProjectName = project.Name.ToUpperInvariant(); if (hash.ContainsKey(upperProjectName)) { UnloadOrReloadProject(project, parameters, unReLoad); hash.Remove(upperProjectName); } }); foreach (var project in hash.Values.OrderBy(p => p)) { cout(string.Format(Resources.ErrorMessageProjectWasNotFound, project)); } }
public static void UnloadOrReloadAllProjects(UnReLoad unReLoad, Action<string> cout) { var parameters = CreateParams(cout); ExecuteOnProjectsInSolution(project => UnloadOrReloadProject(project, parameters, unReLoad)); }
private static void UnloadOrReloadProject(VSProject project, UnReLoadParams parameters, UnReLoad unReLoad, bool setAsStartup = false) { try { var path = string.Format("{0}\\{1}", parameters.SolutionName, project.Path); var obj = parameters.SolutionHierarchy.GetItem(path); obj.Select(vsUISelectionType.vsUISelectionTypeSelect); switch (unReLoad) { case UnReLoad.Unload: if (project.IsLoaded) { parameters.Out(string.Format(Resources.MessageUnloadingProject, project.Name)); AppData.Current.DTE.ExecuteCommand(SolutionExplorerCommands.UnloadProject); } break; case UnReLoad.Reload: if (!project.IsLoaded) { parameters.Out(string.Format(Resources.MessageReloadingProject, project.Name)); AppData.Current.DTE.ExecuteCommand(SolutionExplorerCommands.ReloadProject); } if (setAsStartup) { parameters.Out(string.Format(Resources.MessageSettingProjectAsStartup, project.Name)); AppData.Current.DTE.ExecuteCommand(SolutionExplorerCommands.SetAsStartup); } break; default: throw new ArgumentOutOfRangeException("unReLoad"); } } catch (Exception ex) { //parameters.Out(string.Format("Failed to {0} project {1}, {2}", unReLoad == UnReLoad.Unload ? "unload" : "reload", project.Name, ex.Message)); } }