Compartir vía


Exposición de tipos a diseñadores visuales

Visual Studio debe tener acceso a definiciones de clase y tipo en tiempo de diseño para mostrar un diseñador visual. Las clases se cargan desde un conjunto predefinido de ensamblados que incluyen el conjunto de dependencias completo del proyecto actual (referencias más sus dependencias). También puede ser necesario que los diseñadores visuales accedan a clases y tipos definidos en archivos generados por herramientas personalizadas.

Los sistemas de proyectos de Visual Basic y Visual C# proporcionan compatibilidad con el acceso a clases y tipos generados a través de archivos ejecutables portátiles temporales (PE temporales). Cualquier archivo generado por una herramienta personalizada se puede compilar en un ensamblado temporal para que los tipos se puedan cargar desde esos ensamblados y exponerlos a los diseñadores. La salida de cada herramienta personalizada se compila en un PE temporal independiente y el éxito o error de esta compilación temporal depende solo de si se puede compilar o no el archivo generado. Aunque es posible que un proyecto no se compile en su conjunto, es posible que los IDE temporales individuales sigan estando disponibles para los diseñadores.

El sistema de proyecto proporciona compatibilidad completa para realizar el seguimiento de los cambios en el archivo de salida de una herramienta personalizada, siempre que estos cambios sean el resultado de ejecutar la herramienta personalizada. Cada vez que se ejecuta la herramienta personalizada, se genera un nuevo PE temporal y se envían las notificaciones adecuadas a los diseñadores.

Nota:

Dado que el archivo temporal de generación ejecutable del programa se produce en segundo plano, no se notifica ningún error al usuario si se produce un error en la compilación.

Las herramientas personalizadas que aprovechan la compatibilidad temporal con PE deben seguir las siguientes reglas:

  • GeneratesDesignTimeSource debe establecerse en 1 en el Registro.

    No se realiza ninguna compilación de archivos ejecutables de programa sin esta configuración.

  • El código generado debe estar en el mismo idioma que la configuración del proyecto global.

    El PE temporal se compila independientemente de lo que la herramienta personalizada notifica como la extensión solicitada en siempre que GeneratesDesignTimeSource esté establecido en DefaultExtension 1 en el Registro. La extensión no necesita ser .vb, .cs o .jsl; puede ser cualquier extensión.

  • El código generado por la herramienta personalizada debe ser válido y debe compilarse por sí solo con el conjunto de referencias presentes en el proyecto en el momento Generate en que finaliza la ejecución.

    Cuando se compila un PE temporal, el único archivo de origen proporcionado al compilador es la salida de la herramienta personalizada. Por lo tanto, una herramienta personalizada que usa un PE temporal debe generar archivos de salida que se pueden compilar independientemente de otros archivos del proyecto.