public IEnumerable<VssFileInfo> GetAllFiles()
{
var subprojects = new LinkedList<VssProjectInfo>();
var project = this;
while (project != null)
{
foreach (var item in project.items)
{
var subproject = item as VssProjectInfo;
if (subproject != null)
{
subprojects.AddLast(subproject);
}
else
{
yield return (VssFileInfo)item;
}
}
if (subprojects.First != null)
{
project = subprojects.First.Value;
subprojects.RemoveFirst();
}
else
{
project = null;
}
}
}