12

Antecedentes: Deseo crear un compilador de VB personalizado, extendiendo el compilador "original", para manejar mis atributos personalizados de tiempo de compilación.Integración de un compilador personalizado con el IDE de Visual Studio

Pregunta: después de haber creado mi compilador de costumbre y tengo un archivo ejecutable capaz de compilar el código VB a través de la interfaz de línea de comandos estándar, ¿Cómo se integra este compilador con el IDE de Visual Studio? (de modo que presionar "compilar" o "compilar" usará mi compilador en lugar del compilador predeterminado).

EDITAR: (corríjanme si me equivoco)

De las reacciones aquí, veo a esta pregunta es un poco sorprendente, por lo que voy a explicar con más detalle mis necesidades y antecedentes: .NET nos proporciona con un gran mecanismo llamado Atributos. Por lo que yo entiendo, hacer que los atributos apliquen su comportamiento previsto sobre el elemento atribuido (ensamblaje, módulo, clase, método, etc.) - los atributos deben ser reflejados. Entonces, el verdadero truco aquí es reflejar y aplicar el comportamiento en el lugar correcto.

Tomemos la serialización, por ejemplo: Decoramos una clase con el atributo Serializable. Luego pasamos una instancia de la clase al método Serialize del formateador. El formateador reflexiona sobre la instancia, verifica si tiene el atributo Serializable y actúa en consecuencia.

Ahora, si examinamos los atributos Sincronización, Indicadores, Obsoletos y CLSCompliant, entonces la verdadera pregunta es: ¿quién reflexiona sobre ellos? Al menos en algunos casos, tiene que ser el compilador (y/o IDE). Por lo tanto, parece que si deseo crear atributos personalizados que cambien el comportamiento de un elemento independientemente de cualquier consumidor específico, debo extender el compilador para que refleje en la compilación.

Por supuesto, estos no son mis conocimientos personales: el libro "Applied .NET Attributes" proporciona un ejemplo completo de creación de un atributo personalizado y un compilador de C# personalizado para reflejar ese atributo en la compilación (el ejemplo se usa para implementar "java- excepciones de estilo controlado ").

+1

¿De verdad? ¿Realmente quieres hacer esto? –

+3

¿Por qué no? No es como "M.A. Hanin" está tratando de hacer algo fuera de su campo. – AMissico

+0

@ M.A. Hanin: No voy a explicar. Si están conmocionados, entonces no deberían responder la pregunta. ¿Correcto? – AMissico

Respuesta

2

Consulte "Descripción general de MSBuild" en http://msdn.microsoft.com/en-us/library/ms171452.aspx. Los proyectos de Visual Studio son proyectos de MSBuild. Creo que todo lo que tendrías que hacer es hacer un par de cambios menores. No lo hice para un compilador, pero lo hice con ILMerge después de la compilación y funciona muy bien. Inconsútil e incluso posible para depurar los ensamblados fusionados.

3

Salida "BuildAction propiedad" y "Propiedad CustomTool" en http://msdn.microsoft.com/en-us/library/0c6xyb66(VS.80).aspx

Hace algunos años, leí un excelente artículo sobre la creación de un compilador de encargo, registrándolo, y el establecimiento de estas propiedades. No puedo encontrar el artículo ahora, pero esto debería ayudarte a comenzar.

+1

+1, se usó para integrar el compilador MIDL de Mozilla. – MSalters

Cuestiones relacionadas