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)); } }
private static IEnumerable<VSProject> GetProjectItemsFlat(ProjectItems items, string prefix) { foreach (ProjectItem item in items) { var vsProject = new VSProject(item.Name, prefix + item.Name); if (item.SubProject != null) { if (item.SubProject.Kind == Constants.vsProjectKindSolutionItems) { if (item.SubProject.ProjectItems != null) { foreach (var childItem in GetProjectItemsFlat(item.SubProject.ProjectItems, string.Format("{0}\\", item.Name))) { yield return childItem; } } continue; } vsProject.IsLoaded = true; vsProject.UniqueName = item.SubProject.UniqueName; } else { vsProject.IsLoaded = false; } yield return vsProject; } }