给定类型名称,是否可以使用 DTE 找到该类型所在的 ProjectItem?类似于Navigate To...
Visual Studio 2010 中对话框的工作方式。
我能找到的最接近的是Solution.FindProjectItem
,但这需要一个文件名。
谢谢!
给定类型名称,是否可以使用 DTE 找到该类型所在的 ProjectItem?类似于Navigate To...
Visual Studio 2010 中对话框的工作方式。
我能找到的最接近的是Solution.FindProjectItem
,但这需要一个文件名。
谢谢!
我一直在尝试做类似的事情,并提出了以下内容,它只是搜索名称空间和类,直到找到您要查找的内容。
它似乎在大多数情况下都有效,尽管在遇到部分类时它只会返回第一个命中,并且由于它是文件的模型,因此它只会包含该文件中包含的成员。仍在想办法解决这个问题。
这来自 T4 模板并使用 T4 Toolkit(TransformationContext 的来源),因此如果您不使用它,只需获取项目元素并将 Project.CodeModel.CodeElements 传递给递归 FindClass 方法。
示例用法是 FindClass("MyCompany.DataClass");
private CodeClass FindClass(string className)
{
return FindClass(TransformationContext.Project.CodeModel.CodeElements, className);
}
private CodeClass FindClass(CodeElements elements, string className)
{
foreach (CodeElement element in elements)
{
if(element is CodeNamespace || element is CodeClass)
{
CodeClass c = element as CodeClass;
if (c != null && c.Access == vsCMAccess.vsCMAccessPublic)
{
if(c.FullName == className)
return c;
CodeClass subClass = FindClass(c.Members, className);
if(subClass!= null)
return subClass;
}
CodeNamespace ns = element as CodeNamespace;
if(ns != null)
{
CodeClass cc = FindClass(ns.Members, className);
if(cc != null)
return cc;
}
}
}
return null;
}