我有一个小型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>()); } }

该项目仍然不存在。所以我已经手动检查了,在

直接在解决方案内部的
  • 项目是 TRUE
  • 直接位于解决方案内部的解决方案文件夹是 TRUE (小wtf)
  • 解决方案文件夹中的
  • 项目(我在item is Project中找到了它)是 FALSE !!!!! (当然,显式转换也会引发错误)

  • 到底是什么?
    如果不将其强制转换为folder.ProjectItems,即使将其强制转换为dynamic,我也无法在其上调用ProjectFullName和许多其他东西。请帮忙!

    最佳答案

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

    只需几处更改:

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

    关于visual-studio-2010 - VS2010 DTE插件: project inside solution folder is not “Project” ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6410911/

    10-13 06:37