Мой вопрос очень похож на этот: How to cast ComObject to ENVDTE.Project?Как передать ComObject в ENVDTE.Project для Unmodeled проектов?
Я хочу обработать элементы проекта, выбранные в Visual Studio -> Solution Explorer. Если проект загружается код работает нормально, но у меня есть проблемы для ненагруженных проектов (они называются Unmodeled проектов (http://msdn.microsoft.com/en-us/library/hw7ek4f4%28v=vs.80%29.aspx).
Кастинг выбранного элемента для нагруженных проектов uiItem.Object является EnvDTE.Project это хорошо, но как отливать Unmodeled проекты Существует класс и литье uiItem.Object является ProjectItem не работает нет «UnmodeledProject»
Это мой код:.
Window solutionExplorer = mApplicationObject.Windows.Item(Constants.vsWindowKindSolutionExplorer);
if(solutionExplorer != null)
{
UIHierarchy uiHierarchy = (UIHierarchy)solutionExplorer.Object;
if (uiHierarchy != null)
{
object[] selectedItems = (object[])uiHierarchy.SelectedItems;
foreach (UIHierarchyItem uiItem in selectedItems)
{
// Valid project
if (uiItem.Object is EnvDTE.Project)
{
EnvDTE.Project project = uiItem.Object as EnvDTE.Project;
if (project.FullName.Contains(".vdproj") || project.Kind == "{54435603-DBB4-11D2-8724-00A0C9A8B90C}")
{
}
}
else if (uiItem.Object is ProjectItem)
{
// This is never jumped...
}
else
{ ...
Нет, это способ, которым я не хочу идти , Я хочу распознать класс выбранного элемента, но спасибо за этот комментарий. – Slappy