【发布时间】:2013-06-04 08:47:05
【问题描述】:
我的问题和这个很相似:How to cast ComObject to ENVDTE.Project?
我想处理在 Visual Studio -> 解决方案资源管理器中选择的项目项。如果项目已加载,代码可以正常工作,但我在卸载项目时遇到问题(它们被称为未建模项目 (http://msdn.microsoft.com/en-us/library/hw7ek4f4%28v=vs.80%29.aspx)。
为加载的项目投射选定的项目uiItem.Object is EnvDTE.Project 很好,但是如何投射未建模的项目? 没有“UnmodeledProject”类,并且强制转换 uiItem.Object is ProjectItem 不起作用。
这是我的代码:
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
{ ...
【问题讨论】:
标签: c# visual-studio-addins envdte