Visual studio 2010 VS2010 DTE加载项:解决方案文件夹内的项目不是;项目“;

Visual studio 2010 VS2010 DTE加载项:解决方案文件夹内的项目不是;项目“;,visual-studio-2010,add-in,projects-and-solutions,Visual Studio 2010,Add In,Projects And Solutions,我有一个小vs插件,它在解决方案中查找项目,并用它做一些事情。我收集的项目如下: Application.DTE.Solution.Projects.OfType<Project>(); Application.DTE.Solution.Projects.OfType(); 然而,当我引入一个解决方案文件夹并在其中放置一个项目时,突然之间,那个项目就找不到了。所以,我试过了 private IEnumerable<Project> getProjectsRecurs

我有一个小vs插件,它在解决方案中查找项目,并用它做一些事情。我收集的项目如下:

Application.DTE.Solution.Projects.OfType<Project>();
Application.DTE.Solution.Projects.OfType();
然而,当我引入一个解决方案文件夹并在其中放置一个项目时,突然之间,那个项目就找不到了。所以,我试过了

 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>()); } }
private IEnumerable getProjectsRecursive(IEnumerable IEnumerable)
{
foreach(iEnumerable中的变量项)
{
收益回报项目;
foreach(getProjectsRecursive(item.ProjectItems.OfType())中的var子级)
{
退换子女;
}
}
}
public IEnumerable EveryProject{get{return getProjectsRecursive(Application.DTE.Solution.Projects.OfType());}
但项目仍然不存在。所以我已经手动检查了,在一个

  • 直接在解决方案中进行的项目是真实的
  • 直接位于解决方案中的解决方案文件夹为TRUE(小型wtf)
  • 解决方案文件夹中的项目(我在
    文件夹中找到了它。ProjectItems
    )是FALSE!!!!!(当然,显式强制转换会引发错误)
怎么回事? 如果不将其强制转换为
Project
,我就无法调用
FullName
Properties()
和许多其他内容,即使我强制转换为dynamic。请帮忙

答案如下:

只有几处变化:

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