我有一个当前遵循的 Vs2010 包
EnvDTE=>Solution=>Projects=>CodeModel=>CodeElements
递归地执行以下操作并找到类
var q = elements.Cast<CodeElement>()
.Where(x => x is CodeClass || x is CodeNamespace)
.Where(x => x.Name.StartsWith("System") == false)
.Where(x=>x.Name.StartsWith("Infragistics")==false)
.Where(x=>x.Name.StartsWith("Microsoft")==false)
.Where(x => x.Name.StartsWith("ICSharpCode")==false);
它运行得相当慢,有没有办法将此查询/搜索限制为仅在当前项目中定义的类/类型?
据我了解,
FileCodeModel
既无用也不合适,因为这需要打开每个项目项。 最佳答案
文章中描述了我用于导航 Project.CodeModel 或 ProjectItem.FileCodeModel 的代码元素的方式:
如何:从 Visual Studio .NET 宏或加载项导航文件的代码元素
http://www.mztools.com/articles/2006/MZ2006008.aspx
如果性能是一个问题,请尝试避免 LINQ 层是否可以提高性能。除此之外没有什么可做的,因为 EnvDTE 返回的 CodeElements 集合返回所有代码元素,然后在您进行过滤时返回。
关于envdte - 如何在 EnvDTE 中仅获取当前项目中定义的类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3560823/