我有一个小的VS插件,可以查找解决方案中的项目并对其进行一些操作。我是这样收集项目的:
Application.DTE.Solution.Projects.OfType<Project>();
然而,当我引入一个解决方案文件夹并将项目放置其中时,突然发现该项目无处可寻。因此,我尝试了以下方法:
private IEnumerable<Project> getProjectsRecursive(IEnumerable<Project> iEnumerable)
{
foreach (var item in iEnumerable)
{
yield return item;
foreach (var child in getProjectsRecursive(item.ProjectItems.OfType<Project>()))
{
yield return child;
}
}
}
public IEnumerable<Project> EveryProject { get { return getProjectsRecursive(Application.DTE.Solution.Projects.OfType<Project>()); } }
目前项目还没有出现。因此,我手动检查了一下,在一个项目中调用item is Project
- 直接在解决方案中的项目是TRUE
- 直接在解决方案中的解决方案文件夹是TRUE(小问题)
- 在解决方案文件夹中的项目(我在
folder.ProjectItems
中找到它)是FALSE!(当然显式转换会抛出错误)
这是怎么回事?
如果不将其转换为Project
,我无法在其上调用FullName
、Properties()
和许多其他内容,即使我转换为dynamic也不行。请帮忙!