Pregunta

Estoy experimentando con una extensión de Visual Studio 2010, donde necesito trabajo con los hechos expuestos por IMouseProcessor.

Por lo que yo puedo decir de los documentos, debería crear una IMouseProcessorProvider y exportación está usando MEF, de modo que pueda ser recogido automáticamente por Visual Studio.

He creado esta clase:

[Export(typeof(IMouseProcessorProvider))]
[ContentType("code")]
internal sealed class MouseProcessorFactory : IMouseProcessorProvider
{        
    public IMouseProcessor GetAssociatedProcessor(IWpfTextView wpfTextView)
    {
        return new MouseProcessor();
    }
}

Al ejecutar la instancia experimental de Visual Studio, mi extensión es visible en el gestor de extensiones. Sin embargo, el profesional de procesador de ratón personalizado no está siendo llamado. Me estoy perdiendo algo / ¿Qué estoy haciendo mal?

¿Fue útil?

Solución

toman directamente de este sitio (no la mía):

La extensión de Visual Studio 2010 UML Diseñadores - Parte 1: Introducción

VSSDK Beta 2 Bug Soluciones provisionales

Por desgracia hay un par de errores en la corriente VSSDK Beta 2 que tenemos que evitar. Me han dicho que van a ser fijados en una versión de actualización, pero hasta entonces, deja que te lleve a través de la limpieza del proyecto requiere para hacer este trabajo:

Paso 1 - Tweak el archivo .csproj

  1. Haga clic derecho sobre el proyecto y elegir la opción "Descargar proyecto".
  2. Haga clic derecho de nuevo en su proyecto y elegir la opción "Editar Yourprojectname.csproj"
  3. En el grupo de propiedades superior, aspecto para el <IncludeAssemblyInVSIXContainer> etiqueta XML. Se establece en false. Cambiarlo a true.
  4. Guarde el archivo .csproj y vuelva a colocarlo en Visual Studio.

Paso 2 - Ajustes del archivo .vsixmanifest

  1. Haga clic derecho sobre el archivo "source.extension.vsixmanifest" y elija Ver código
  2. En la parte inferior del archivo en la sección de nombre añadir la siguiente línea. (Sí, esas barras verticales son importantes.)

    <MefComponent>|Yourprojectname|</MefComponent>

  3. Guardar y cerrar el archivo.

Otros consejos

Me tomó un tiempo para encontrar la solución completa a este problema, por lo que voy a publicar la solución completa aquí:

  1. Como sugiere 280Z28, hay un error en el SDK para Beta 2. Es necesario editar el .csproj manualmente para asegurarse de que su montaje se incluye en el archivo VSIX generado.
  2. Como JaredPar respondió el attribtute TextViewRole debe añadirse a la aplicación IMouseProcessorProvider.
  3. Por último, el IMouseProcessorProvider también debe ser decorado con un atributo de nombre.

Con todo, este código funciona:

[Export(typeof(IMouseProcessorProvider))]
[ContentType("code")]
[TextViewRole(PredefinedTextViewRoles.Editable)]
[Name("mouseproc")]
internal sealed class MouseProcessorFactory : IMouseProcessorProvider
{        
    public IMouseProcessor GetAssociatedProcessor(IWpfTextView wpfTextView)
    {            
        return new MouseProcessor();
    }
}

Creo que es necesario agregar un atributo TextViewRole también.

[TextViewRole(PredefinedTextViewRoles.Editable)]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top