C # Add-In: ¿Cómo accede a las instancias de tiempo de ejecución de los objetos mientras se depura?

StackOverflow https://stackoverflow.com/questions/5493325

Pregunta

Estoy desarrollando un complemento para C # que solo se utilizaría durante la depuración.Una vez que se instazó, mi nombre necesita para encontrar todas las instancias de una clase o interfaz específica para mostrar un gráfico sobre los datos encontrados.

¿Cómo puedo encontrar exactamente o acceder a estos objetos en mi extensión?Tengo acceso al objeto de solicitud DTE2 en mi extensión, pero no estoy seguro de cómo buscar el código real que se está depurando por vs.Estoy pensando que podría ser capaz de usar la reflexión, pero no estoy seguro de dónde mirar.

gracias.

¿Fue útil?

Solución

I've implemented a plugin that searches through dlls in a given directory and finds classes that implement a particular interface. Below is the class I used to do this:

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);
    }
}

All you have to do is initialize this class with something like this:

PluginLoader loader = new PlugInFactory<InterfaceToSearchFor>();
InterfaceToSearchFor instanceOfInterface = loader.CreatePlugin(AppDomain.CurrentDomain.BaseDirectory);

Otros consejos

This type of operation isn't really possible from a Visual Studio plugin. The object alive when debugging live in the debugee process while your add-in is running in the Visual Studio process. It's not possible to access arbitrary objects across process boundaries in .Net.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top