4

現在、次の 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はすべてのプロジェクトアイテムを開く必要があるため、有用でも適切でもありません。

4

2 に答える 2

3

Project.CodeModel または ProjectItem.FileCodeModel のコード要素をナビゲートするために使用する方法は、次の記事で説明されています。

方法: Visual Studio .NET マクロまたはアドインからファイルのコード要素をナビゲートする http://www.mztools.com/articles/2006/MZ2006008.aspx

パフォーマンスが問題になる場合は、LINQ レイヤーを回避することでパフォーマンスが向上するかどうかを試してください。EnvDTE によって返される CodeElements コレクションはすべてのコード要素を返すため、それ以外に行うことはあまりありません。後でフィルター処理を行います。

于 2010-08-25T13:15:41.023 に答える