VS2010 DTE Addin:解决方案文件夹中的项目不是“项目”

时间:2011-06-20 12:12:04

标签: visual-studio-2010 add-in projects-and-solutions

我有一个小的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 (小wtf)
  • 解决方案文件夹中的
  • 项目(我在folder.ProjectItems中找到它) FALSE !!!!! (当然,显式流程会抛出错误)

到底是什么? 如果不将其转换为Project,我就无法调用FullNameProperties()以及其他许多内容,即使我转换为动态。请帮忙!

1 个答案:

答案 0 :(得分:8)

答案在这里:http://www.wwwlicious.com/2011/03/29/envdte-getting-all-projects-html/

只需进行一些更改:

if (project.Kind == EnvDTE.Constants.vsProjectKindSolutionItems)