2010-05-31 11 views
6

Ok, antes de comenzar, me doy cuenta de que hay mucha documentación sobre este tema, pero hasta ahora no he conseguido ni siquiera una coloración básica que funcione para VS2010.Visual studio 2010 colorizantes, intellisense y el resto. ¡Donde empezar!

Mi objetivo es simplemente llegar a un punto en el que puedo abrir un documento y todo es de color rojo, desde aquí puedo implementar la lógica de análisis correspondiente.

Esto es lo que he tratado/encontrado:

1) descargado todos los relevent SDK y tal- Encontrado la muestra ook (http://code.msdn.microsoft.com/ookLanguage) - no construyó, no funcionaba.

2) Sabiendo casi nada sobre MEF leer a través de "La implementación de un servicio de idioma mediante el uso del paquete de estructura administrado" - http://msdn.microsoft.com/en-us/library/bb166533(v=VS.100).aspx

Esto era prácticamente una copia y pega de todas las cosas básicas aquí, y también la actualización de algunos referencias que estaban desactualizadas con la muestra, vea: http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/a310fe67-afd2-4592-b295-3fc86fec7996

Ahora, llegué a un punto donde al ejecutar el paquete MEF parece haberse conectado correctamente (lo sé porque con el depurador abierto puedo ver que los paquetes se inicializan y los métodos FDoIdle están siendo afectados).

Cuando abro un archivo de la extensión que he registrado con el ProvideLanguageExtensionAttribute, todo muere como si estuviera en un bucle infinito, pero aún no se muestran los símbolos de depuración (aunque están cargados).

Al observar la muestra de ook y los ejemplos de MEF, parecen ser enfoques totalmente diferentes para el mismo problema. En la muestra de ook, hay nociones de clasificaciones y controladores de finalización que no se mencionan en el ejemplo de MEF. Además, parece que no crean un servicio de paquete o de idioma, así que no tengo idea de cómo funciona si funciona?

Con el ejemplo de MEF, mi suposición es que tengo que conectarme al "IScanner.ScanTokenAndProvideInfoAboutIt" para proporcionar resaltado de sintaxis. Lo cual estaría bien si pudiera golpear este método.

Así que mi primera pregunta, ¿cuál es el enfoque que debería tomar aquí? ¿O ambos de alguna manera se unen?

Mi segunda pregunta es, ¿dónde puedo encontrar un proyecto básico completamente funcional que implemente el sintetizador de sintaxis básica estándar de pantano e intellisense o VS2010?

En tercer lugar, en el ejemplo de MEF cuando creé un paquete, se crearon varios proyectos de prueba para mí. Parece que las pruebas de integración lanzan la plataforma de prueba VS2010 de alguna manera, pero la prueba falla. Sería bueno escribir mi servicio con las pruebas, pero no tengo idea de qué/cómo puedo probar cada interacción, por lo que cualquier referencia a la prueba de los servicios de idiomas sería útil.

Finalmente, arroje cualquier enlace de recursos/libros a mi manera que pueda serle útil.

Cheers, Chris.

N. B. Lo siento, me doy cuenta de que esto es parte de una pregunta en parte, pero nunca he estado tan confundido.

Respuesta

4

Primero, el ejemplo del paquete es no usando MEF.Básicamente, cada lugar en el que menciones MEF en tu pregunta no es realmente MEF, sino el marco de paquete administrado (MPF), también llamado coloquialmente el servicio de lenguaje administrado (MLS). Sabría si su extensión estaba usando MEF por dos cosas: el vsixmanifest enumera su ensamblado como que contiene un componente MEF, y ve los atributos [Export] y [Import] en el código.

La forma más fácil de hacerlo es es para utilizar MEF. Como tiene instalado el SDK, también tiene una plantilla para un proyecto de clasificador de editor (en C# (or VB)->Extensibility->Editor classifier en el cuadro de diálogo Nuevo proyecto). Ciertamente puede hacer esto con un servicio de idioma/colorizer/paquete, pero habrá significativamente más código que el clasificador equivalente.

La solución Ook es la muestra para esto y debe trabajo; si no se desarrolla/funciona, ¿puede enviarme un correo electrónico (noahric at microsoft) con los errores que está viendo para poder enviar un correo electrónico al propietario de esa muestra?

En general, también debe leer my answer para la pregunta sobre "¿Cómo puedo escribir un complemento para VS2010 utilizando MEF?". Eso tiene enlaces a otros recursos que deberían ayudar.

+0

Gracias por la actualización, le enviaré un correo electrónico con los problemas que estoy enfrentando con el ook! solución. También noté que NO tengo la plantilla de proyecto del clasificador del Editor disponible en la pestaña Extensibilidad, lo que me hace preguntarme si he instalado el SDK incorrectamente o si tengo una versión anterior ejecutándose en mi máquina. – Owen

+0

A propósito, Noah, me has obligado a leer sobre MEF y sus cosas bastante interesantes. Realmente no lo entendí como algo más que un contenedor de IoC hasta que cavé un poco más profundo. Ahora entiendo cómo VS podría aprovechar esto. Quizás valga la pena leer un poco más antes de publicar/despotricar aquí :-). – Owen

+0

Ok, ¡así que llegué al fondo de por qué no podía construir el Ook! ejemplo: solo tenía instalado el SDK beta. Además, no pude iniciar la muestra con el shell de prueba VS ya que faltaban las propiedades de depuración que especificaban para ejecutar el VS pero las agregué, y todo está bien. Gracias por tu ayuda. – Owen

Cuestiones relacionadas