using System;
using System.Collections;
using System.Collections.Specialized;
using Microsoft.VisualStudio.Shell.Interop;
namespace AnticipatingMinds.VisualStudioServices{
/// <summary>
/// Summary description for VsSolution.
/// </summary>
public class VsSolution : VsHierarchy
{
public VsSolution(IVsSolution vsSolution,IServiceProvider site) : base(vsSolution as IVsHierarchy,site)
{
this.vsSolution = vsSolution;
}
public VsProject[] GetProjects()
{
Hashtable projectFileNames = new Hashtable();
VSITEMSELECTION[] items = GetItems(VSEHI.VSEHI_Branch | VSEHI.VSEHI_Nest);
foreach(VSITEMSELECTION item in items)
{
if(item.itemid == VSITEMID_ROOT && (item.pHier as IVsProject) != null)
{
string projectFileName;
IVsProject project = item.pHier as IVsProject;
project.GetMkDocument(VSITEMID_ROOT,out projectFileName);
if(projectFileName != null)
if(!projectFileNames.Contains(projectFileName))
projectFileNames[projectFileName] = new VsProject(project,Site);
}
}
VsProject[] projects = new VsProject[projectFileNames.Count];
projectFileNames.Values.CopyTo(projects,0);
return projects;
}
public IVsSolution IVsSolution
{
get
{
return vsSolution;
}
}
public string FileName
{
get
{
string temp;
string fileName;
vsSolution.GetSolutionInfo(out temp,out fileName,out temp);
return fileName;
}
}
private IVsSolution vsSolution;
}
}
|