VS2010 DTE插件:解决方案文件夹内的项目不是“Project”

6

我有一个小的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,我无法在其上调用FullNameProperties()和许多其他内容,即使我转换为dynamic也不行。请帮忙!

1个回答

8

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接