我有一个小的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
folder.ProjectItems
中找到它) FALSE !!!!! (当然,显式流程会抛出错误) 到底是什么?
如果不将其转换为Project
,我就无法调用FullName
,Properties()
以及其他许多内容,即使我转换为动态。请帮忙!
答案 0 :(得分:8)
答案在这里:http://www.wwwlicious.com/2011/03/29/envdte-getting-all-projects-html/
只需进行一些更改:
if (project.Kind == EnvDTE.Constants.vsProjectKindSolutionItems)