How do I programmatically unload a project from a solution?
Happy new year everyone! Here's my first technical post about the Visual Studio SDK :)
Back in December, I had a conference call with a potential partner who's building a custom integrated development environment on top of Visual Studio.
Once of the issues they ran into was trying to figure out how to unload a project from a solution. They were looking for an easy way to do that but ended up with a hacky implementation.
I chatted with one of our developers (Ole) on the VS SDK team and he provided some sample code.
The code below can be copy-and-pasted into the menu command handler if you use the wizard to create a new VS Package with a new menu command. Additionally, don't forget to add a reference to the EnvDTE assembly.
//Get the DTE object
DTE dte = GetService(typeof(SDTE)) as DTE;
Debug.Assert(dte != null);
//Get the selected project
Project selectedProject = null;
if (dte.SelectedItems.Count > 0)
{
selectedProject = ((SelectedItem)dte.SelectedItems.Item(1)).Project;
}
if (selectedProject != null)
{
IVsSolution solutionService = GetService(typeof(SVsSolution)) as IVsSolution;
Debug.Assert(solutionService != null);
IVsHierarchy selectedHierarchy;
ErrorHandler.ThrowOnFailure(solutionService.GetProjectOfUniqueName(selectedProject.UniqueName, out selectedHierarchy));
Debug.Assert(selectedHierarchy != null);
ErrorHandler.ThrowOnFailure(solutionService.CloseSolutionElement((uint)__VSSLNCLOSEOPTIONS.SLNCLOSEOPT_UnloadProject, selectedHierarchy, 0));
}
Comments
Anonymous
January 07, 2008
PingBack from http://msdnrss.thecoderblogs.com/2008/01/07/how-do-i-programmatically-unload-a-project-from-a-solution/Anonymous
January 15, 2008
This month's letter includes information about what the VSX team has been working on in the past fewAnonymous
January 21, 2008
This is a nice first technical blog!