0

デバッグ中にのみ使用される C# 用のアドインを開発しています。インスタンス化したら、アドインは特定のクラスまたはインターフェイスのすべてのインスタンスを見つけて、見つかったデータに関するグラフを表示する必要があります。

拡張機能でこれらのオブジェクトを正確に検索またはアクセスするにはどうすればよいですか? 拡張機能で DTE2 アプリケーション オブジェクトにアクセスできますが、VS によってデバッグされている実際のコードを検索する方法がわかりません。どういうわけかリフレクションを使用できるのではないかと考えていますが、どこを見ればよいかわかりません。

ありがとう。

4

2 に答える 2

0

特定のディレクトリ内の dll を検索し、特定のインターフェイスを実装するクラスを見つけるプラグインを実装しました。以下は、これを行うために使用したクラスです。

public class PlugInFactory<T>
{
    public T CreatePlugin(string path)
    {
        foreach (string file in Directory.GetFiles(path, "*.dll"))
        {
            foreach (Type assemblyType in Assembly.LoadFrom(file).GetTypes())
            {
                Type interfaceType = assemblyType.GetInterface(typeof(T).FullName);

                if (interfaceType != null)
                {
                    return (T)Activator.CreateInstance(assemblyType);
                }
            }
        }

        return default(T);
    }
}

このクラスを次のように初期化するだけです。

PluginLoader loader = new PlugInFactory<InterfaceToSearchFor>();
InterfaceToSearchFor instanceOfInterface = loader.CreatePlugin(AppDomain.CurrentDomain.BaseDirectory);
于 2011-03-30T22:54:46.450 に答える
0

このタイプの操作は、Visual Studio プラグインからは実際には不可能です。アドインが Visual Studio プロセスで実行されているときに、debugee プロセスでライブ デバッグを行うと、オブジェクトはアクティブになります。.Net では、プロセス境界を越えて任意のオブジェクトにアクセスすることはできません。

于 2011-03-30T22:43:48.963 に答える