Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original
Este tema aún no ha recibido ninguna valoración - Valorar este tema

BuildProvider (Clase)

Define un conjunto de propiedades y métodos para generar código fuente en el entorno de compilación ASP.NET. Esta clase es abstracta.

Espacio de nombres:  System.Web.Compilation
Ensamblado:  System.Web (en System.Web.dll)
public abstract class BuildProvider

El tipo BuildProvider expone los siguientes miembros.

  NombreDescripción
Método protegidoBuildProviderInicializa una nueva instancia de la clase BuildProvider.
Arriba
  NombreDescripción
Propiedad públicaCodeCompilerTypeRepresenta el tipo de compilador usado por un proveedor de compilación para crear código fuente para un tipo de archivo personalizado.
Propiedad protegidaReferencedAssembliesRepresenta los ensamblados que se van a compilar con el código fuente que genera el proveedor de compilación.
Propiedad protegidaVirtualPathRepresenta el archivo que la implementación de este proveedor de compilación va a crear.
Propiedad públicaVirtualPathDependenciesRepresenta una colección de rutas de acceso virtual que se debe generar antes de que el proveedor de compilación genere el código.
Arriba
  NombreDescripción
Método públicoEquals(Object)Determina si el objeto especificado es igual al objeto actual. (Se hereda de Object).
Método protegidoFinalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método públicoGenerateCodeGenera código fuente para la ruta de acceso virtual del proveedor de compilación y agrega el código fuente a un generador de ensamblado especificado.
Método protegidoGetCodeCompileUnitRepresenta el contenedor para el gráfico CodeDOM generado.
Método públicoGetCustomStringInfraestructura. Genera una cadena que se va a conservar en el ensamblado compilado.
Método protegidoGetDefaultCompilerTypeDevuelve la configuración del compilador para el lenguaje predeterminado de la aplicación.
Método protegidoGetDefaultCompilerTypeForLanguageDevuelve la configuración del compilador para el proveedor de compilación basándose en el lenguaje especificado.
Método públicoGetGeneratedTypeDevuelve un tipo generado por el proveedor de compilación a partir de la ruta de acceso virtual.
Método públicoGetHashCodeActúa como función hash para un tipo concreto. (Se hereda de Object).
Método públicoGetResultFlagsDevuelve un valor que indica las acciones necesarias cuando se compila una ruta de acceso virtual.
Método públicoGetTypeObtiene el objeto Type de la instancia actual. (Se hereda de Object).
Método protegidoMemberwiseClone Crea una copia superficial del Object actual. (Se hereda de Object).
Método protegidoOpenReader()Abre un lector de texto para leer de la ruta de acceso virtual del objeto de proveedor de compilación actual.
Método protegidoOpenReader(String)Abre un lector de texto para leer de una ruta de acceso virtual especificada.
Método protegidoOpenStream()Abre una secuencia para leer la ruta de acceso virtual del objeto de proveedor de compilación actual.
Método protegidoOpenStream(String)Abre una secuencia para leer de una ruta de acceso virtual especificada.
Método públicoProcessCompileErrorsCuando se invalida en una clase derivada, permite revisar los mensajes del error del compilador para que pueda modificarlos para proporcionar más información.
Método públicoMiembro estáticoRegisterBuildProviderRegistra un proveedor de compilación.
Método públicoToStringDevuelve una cadena que representa el objeto actual. (Se hereda de Object).
Arriba

El entorno de compilación ASP.NET utiliza objetos BuildProvider para crear código fuente para los distintos tipos de archivo de una aplicación. Principalmente, son las clases derivadas de BuildProvider las que proporcionan código fuente para los archivos, las páginas Web, los recursos y demás elementos personalizados.

Por lo común, no se crea directamente una instancia de la clase BuildProvider. En su lugar, se implementa una clase que deriva de BuildProvider y se configura la implementación de BuildProvider para utilizarla en el entorno de compilación de ASP.NET.

Las instancias de la clase BuildProvider se utilizan con objetos AssemblyBuilder para crear uno o varios archivos en un ensamblado compilado. Una instancia de BuildProvider genera código fuente en el lenguaje adecuado para cada archivo y el objeto AssemblyBuilder combina en un ensamblado único el código fuente que aporta cada instancia de BuildProvider.

El entorno de generación ASP.NET utiliza instancias de la clase BuildProvider para crear los archivos de una aplicación. La propiedad VirtualPath de la clase BuildProvider indica la ruta de acceso del archivo que se va a compilar. La extensión de archivo de cada archivo de una aplicación se asigna al proveedor de compilación correspondiente. Basándose en la extensión de archivo, el entorno de compilación de ASP.NET inicializa una instancia de BuildProvider para cada archivo y utiliza los métodos de BuildProvider para generar su código fuente. Al generar un ensamblado de uno o varios archivos, el entorno de generación ASP.NET pasa un objeto AssemblyBuilder, que se basa en el lenguaje de compilador preferido y en el contexto del archivo, a los métodos de BuildProvider, de modo que la instancia de BuildProvider puede aportar al ensamblado total el código fuente para su archivo.

Para definir acciones de generación personalizadas para un tipo de archivo en una aplicación ASP.NET, debe derivar una clase de BuildProvider, implementar los miembros dentro de la clase derivada para crear el tipo de archivo y configurar el proveedor de compilación para la extensión de archivo correspondiente en el archivo de configuración de la aplicación.

El elemento add especifica la extensión de archivo para los archivos compatibles y si el proveedor de compilación admite archivos de código, archivos Web, archivos de recursos o todos los archivos. Utilice el atributo type para especificar el nombre de tipo completo de la implementación de proveedor de compilación. Use la clase BuildProviderAppliesToAttribute para especificar si el proveedor de compilación se aplica a los archivos del directorio App_Code, a los archivos de un directorio de contenido web, a los recursos globales o locales, o a todos los archivos. Utilice el atributo extension para especificar la extensión de archivo que se vaya a utiliza para identificar los archivos que admite la clase BuildProvider. Utilice la clase BuildProviderCollection para examinar los proveedores de compilación de un archivo de configuración. Para obtener más información sobre cómo configurar un proveedor de compilación, vea Elemento buildProviders para compilation (Esquema de configuración de ASP.NET).

Para implementar un proveedor de generación que cree código fuente para un tipo de archivo personalizado, derive una clase de BuildProvider y reemplace el método GenerateCode para generar código fuente para el tipo de archivo compatible. El código fuente generado se agrega al objeto AssemblyBuilder como un gráfico CodeDOM o como contenido que representa un archivo de código fuente físico. Si el proveedor de compilación requiere un lenguaje de programación concreto, reemplace la propiedad CodeCompilerType para devolver un objeto CompilerType para el lenguaje de programación compatible. Si el proveedor de compilación no requiere un lenguaje de programación concreto, no reemplace la propiedad CodeCompilerType; utilice la implementación de la clase base, que indica que el proveedor de compilación puede utilizar cualquier lenguaje de .NET Framework, como Visual Basic o C#.

Para implementar un proveedor de generación que cree código fuente para contenido Web, derive una clase de BuildProvider y reemplace el método GetGeneratedType para devolver el objeto Type para la clase generada por BuildProvider. Reemplace el método GenerateCode para generar código fuente para el tipo proporcionado por el archivo compatible.

NotaNota

Agregar una clase BuildProvider personalizada al archivo Web.config funciona en un sitio web ASP.NET, pero no funciona en un proyecto de aplicación web ASP.NET. En un proyecto de aplicación web, el código generado por la clase BuildProvider no se puede incluir en la aplicación. Para obtener más información, vea Información general sobre la precompilación de proyectos de aplicación web ASP.NET.

TopicLocation
Cómo: Proteger una aplicación ASP.NET en un servidor compartidoGenerar aplicaciones Web ASP .NET
Cómo: Proteger una aplicación ASP.NET en un servidor compartidoGenerar aplicaciones Web ASP .NET en Visual Studio

En el ejemplo de código siguiente se muestra una implementación de proveedor de compilación simple, que hereda de la clase base BuildProvider abstracta. El proveedor de compilación reemplaza los miembros de CodeCompilerType, GetGeneratedType y GenerateCode de la clase base. El ejemplo no incluye la implementación de la clase SampleClassGenerator. Para obtener más información, vea la información general de la clase CodeCompileUnit.


using System;
using System.Collections;
using System.IO;
using System.Text;
using System.Web;
using System.Web.Compilation;
using System.CodeDom.Compiler;
using System.CodeDom;
using System.Security;
using System.Security.Permissions;

// Define a simple build provider implementation.
[PermissionSet(SecurityAction.Demand, Unrestricted = true)]
public class SampleBuildProvider : BuildProvider
{
    // Define an internal member for the compiler type.
    protected CompilerType _compilerType = null;

    public SampleBuildProvider()
    {
        _compilerType = GetDefaultCompilerTypeForLanguage("C#");
    }

    // Return the internal CompilerType member 
    // defined in this implementation.
    public override CompilerType CodeCompilerType
    {
        get { return _compilerType; }
    }


    // Define the build provider implementation of the GenerateCode method.
    public override void GenerateCode(AssemblyBuilder assemBuilder)
    {
        // Generate a code compile unit, and add it to
        // the assembly builder.

        TextWriter tw = assemBuilder.CreateCodeFile(this);
        if (tw != null)
        {
            try
            {
                // Generate the code compile unit from the virtual path.
                CodeCompileUnit compileUnit = SampleClassGenerator.BuildCompileUnitFromPath(VirtualPath);

                // Generate the source for the code compile unit, 
                // and write it to a file specified by the assembly builder.
                CodeDomProvider provider = assemBuilder.CodeDomProvider;
                provider.GenerateCodeFromCompileUnit(compileUnit, tw, null);
            }
            finally
            {
                tw.Close();
            }
        }
    }

    public override System.Type GetGeneratedType(CompilerResults results)
    {
        string typeName = SampleClassGenerator.TypeName;

        return results.CompiledAssembly.GetType(typeName);
    }
}


.NET Framework

Compatible con: 4.5, 4, 3.5, 3.0, 2.0

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
¿Te ha resultado útil?
(Caracteres restantes: 1500)

Adiciones de comunidad

AGREGAR
© 2013 Microsoft. Reservados todos los derechos.