Atributos de compatibilidad del sitio web
Se puede ampliar el proyecto de sitio web de Visual Studio para proporcionar compatibilidad con lenguajes de programación web. El idioma debe registrarse en Visual Studio para que las plantillas de proyecto puedan aparecer en el cuadro de diálogo Nuevo sitio web cuando se selecciona el idioma.
El ejemplo de IronPython Studio incluye compatibilidad con sitios web. El ejemplo contiene las siguientes clases de atributo para registrar IronPython como lenguaje codebehind para los nuevos proyectos web.
WebSiteProjectAttribute
Este atributo se coloca en el proyecto de lenguaje. Agrega el lenguaje a la lista de lenguajes de programación web en la lista Lenguaje del cuadro de diálogo Nuevo sitio web. Por ejemplo, el código siguiente agrega IronPython a la lista:
[WebSiteProject("IronPython", "Iron Python")]
public class PythonProjectPackage : ProjectPackage
Este atributo también establece la ruta de acceso de las plantillas para que apunte a la carpeta templates. Para obtener más información sobre la ubicación de la carpeta templates, vea Plantillas de soporte técnico del sitio web.
WebSiteProjectRelatedFilesAttribute
Este atributo se coloca en el proyecto de lenguaje. Permite que el proyecto de sitio web anida un tipo de archivo (relacionado) en otro tipo de archivo (principal) en el Explorador de soluciones.
Por ejemplo, el código siguiente especifica que un archivo codebehind de IronPython está relacionado con un archivo .aspx. Cuando se crea una nueva página web .aspx en una solución de sitio web de IronPython, se genera un nuevo archivo de origen .py y aparece como un nodo secundario de la página .aspx.
[WebSiteProjectRelatedFiles("aspx", "py")]
public class PythonProjectPackage : ProjectPackage
ProvideIntellisenseProviderAttribute
Este atributo se coloca en el paquete de proyecto de lenguaje. Selecciona el proveedor de IntelliSense para el idioma.
Por ejemplo, el código siguiente especifica que se debe crear una instancia de PythonIntellisenseProvider, que implementa IVsIntellisenseProject, a petición para proporcionar servicios de lenguaje.
[ProvideIntellisenseProvider(typeof(PythonIntellisenseProvider), "IronPythonCodeProvider", "Iron Python", ".py", "IronPython;Python", "IronPython")]
public class PythonPackage : Package, IOleComponent
La implementación de IVsIntellisenseProject controla las referencias y llama al compilador de lenguaje cuando se solicita una página web con código, pero no se almacena en caché.