У меня есть небольшой vs addin, который ищет проекты внутри решения и делает с ним несколько вещей.Я собираю проекты следующим образом:
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 (small wtf)
- Проект в папке решения (я нашел его в
folder.ProjectItems
) равен FALSE !!!!!(и, конечно, явное приведение приводит к ошибке)
Какого черта? Не приведя его к Project
, я не могу вызвать FullName
, Properties()
и многие другиевещи на нем, даже если я приведу к dynamic .Пожалуйста, помогите!