BuildProvider BuildProvider BuildProvider BuildProvider Class

Definición

Define un conjunto de propiedades y métodos para generar código fuente dentro del entorno de generación de ASP.NET.Defines a set of properties and methods for generating source code within the ASP.NET build environment. Esta clase es abstracta.This class is abstract.

public ref class BuildProvider abstract
public abstract class BuildProvider
type BuildProvider = class
Public MustInherit Class BuildProvider
Herencia
BuildProviderBuildProviderBuildProviderBuildProvider
Derivado

Ejemplos

En el ejemplo de código siguiente se muestra una implementación de proveedor de compilación simple, que BuildProvider hereda de la clase base abstracta.The following code example illustrates a simple build provider implementation, inheriting from the abstract BuildProvider base class. El proveedor de compilación invalida los CodeCompilerTypemiembros, GetGeneratedTypey GenerateCode de la clase base.The build provider overrides the CodeCompilerType, GetGeneratedType, and GenerateCode members of the base class. En el ejemplo no se incluye la implementación de SampleClassGenerator la clase.The example does not include the implementation of the SampleClassGenerator class. Para obtener más información, vea CodeCompileUnit la información general de la clase.For more information, see the CodeCompileUnit class overview.

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);
    }
}
Imports System.Collections
Imports System.IO
Imports System.Text
Imports System.Web
Imports System.Web.Compilation
Imports System.CodeDom.Compiler
Imports System.CodeDom
Imports System.Security
Imports System.Security.Permissions

<PermissionSet(SecurityAction.Demand, Unrestricted := true)> _
Public Class SampleBuildProvider
    Inherits BuildProvider

    Protected _compilerType As CompilerType = Nothing

    Public Sub New()
        _compilerType = GetDefaultCompilerType()
    End Sub

    ' Return the internal CompilerType member 
    ' defined in this implementation.
    Public Overrides ReadOnly Property CodeCompilerType() As CompilerType
        Get
            CodeCompilerType = _compilerType
        End Get
    End Property


    ' Define the build provider implementation of the GenerateCode method.
    Public Overrides Sub GenerateCode(ByVal assemBuilder As AssemblyBuilder)
        ' Generate a code compile unit, and add it to
        ' the assembly builder.

        Dim tw As TextWriter = assemBuilder.CreateCodeFile(Me)
        If Not tw Is Nothing Then
            Try
                ' Generate the code compile unit from the virtual path.
                Dim compileUnit As CodeCompileUnit = _
                        SampleClassGenerator.BuildCompileUnitFromPath(VirtualPath)

                ' Generate the source for the code compile unit, 
                ' and write it to a file specified by the assembly builder.
                Dim provider As CodeDomProvider = assemBuilder.CodeDomProvider
                provider.GenerateCodeFromCompileUnit(compileUnit, tw, Nothing)
            Finally
                tw.Close()
            End Try

        End If
    End Sub

    Public Overrides Function GetGeneratedType(ByVal results As CompilerResults) As System.Type
        Dim typeName As String = SampleClassGenerator.TypeName

        Return results.CompiledAssembly.GetType(typeName)
    End Function

End Class

Comentarios

El entorno de compilación de BuildProvider ASP.net utiliza objetos para generar código fuente para diferentes tipos de archivo dentro de una aplicación.The ASP.NET build environment uses BuildProvider objects to generate source code for different file types within an application. Las clases derivadas de BuildProvider principalmente proporcionan código fuente para archivos, páginas web, recursos y otros elementos personalizados.Classes derived from BuildProvider predominantly provide source code for files, Web pages, resources, and other custom items.

Normalmente, no se crea una instancia de la BuildProvider clase directamente.Typically, you do not create an instance of the BuildProvider class directly. En su lugar, se implementa una clase que deriva de BuildProvidery se configura la BuildProvider implementación para su uso en el entorno de compilación ASP.net.Instead, you implement a class that derives from BuildProvider, and configure the BuildProvider implementation for use within the ASP.NET build environment.

Las instancias de BuildProvider la clase se usan AssemblyBuilder con objetos para compilar uno o varios archivos en un ensamblado compilado.Instances of the BuildProvider class are used with AssemblyBuilder objects to build one or more files into a compiled assembly. Una BuildProvider instancia genera código fuente en el lenguaje adecuado para los archivos individuales y el AssemblyBuilder objeto combina el origen aportado por BuildProvider cada instancia en un único ensamblado.A BuildProvider instance generates source code in the appropriate language for individual files, and the AssemblyBuilder object combines the source contributed by each BuildProvider instance into a single assembly.

El entorno de compilación ASP.net usa instancias de BuildProvider la clase para compilar archivos dentro de una aplicación.The ASP.NET build environment uses instances of the BuildProvider class to build files within an application. La VirtualPath propiedad de la BuildProvider clase indica la ruta de acceso del archivo que se va a compilar.The VirtualPath property of the BuildProvider class indicates the path of the file to be built. La extensión de archivo de cada archivo dentro de una aplicación se asigna a un proveedor de compilación correspondiente.The file extension of each file within an application is mapped to a corresponding build provider. El entorno de compilación ASP.net Inicializa una BuildProvider instancia para cada archivo basado en la extensión de archivo y usa los BuildProvider métodos para generar código fuente para el archivo.The ASP.NET build environment initializes a BuildProvider instance for each file based on the file extension, and uses the BuildProvider methods to generate source code for the file. El entorno de compilación ASP.net pasa AssemblyBuilder un objeto basado en el lenguaje del compilador preferido y el contexto del BuildProvider archivo a los métodos al crear un ensamblado a partir de uno o BuildProvider más archivos, de modo que la instancia pueda contribuir código fuente para su archivo en el ensamblado global.The ASP.NET build environment passes an AssemblyBuilder object based on the preferred compiler language and the context of the file to the BuildProvider methods when building an assembly from one or more files, so that the BuildProvider instance can contribute source code for its file to the overall assembly.

Para definir acciones de compilación personalizadas para un tipo de archivo dentro de una aplicación ASP.net, debe derivar BuildProvideruna clase de, implementar miembros dentro de la clase derivada para generar el tipo de archivo y configurar el proveedor de compilación para la extensión de archivo correspondiente. dentro del archivo de configuración de la aplicación.To define custom build actions for a file type within an ASP.NET application, you must derive a class from BuildProvider, implement members within the derived class for building the file type, and configure the build provider for the corresponding file extension within the application configuration file.

Especifica la extensión de archivo para los archivos admitidos y si el proveedor de compilación admite archivos de código, archivos Web, archivos de recursos o todos los archivos.The specifies the file extension for supported files, and whether the build provider supports code files, Web files, resource files or all files. Utilice el type atributo para especificar el nombre de tipo completo de la implementación del proveedor de compilación.Use the type attribute to specify the fully qualified type name of the build provider implementation. Utilice la BuildProviderAppliesToAttribute clase 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.Use the BuildProviderAppliesToAttribute class to specify whether the build provider applies to files in the App_Code directory, to files in a Web content directory, to global or local resources, or to all files. Utilice el extension atributo para especificar la extensión de archivo que se usa para identificar BuildProvider los archivos que admite la clase.Use the extension attribute to specify the file extension used to identify files that the BuildProvider class supports. Use la BuildProviderCollection clase para examinar los proveedores de compilación en un archivo de configuración.Use the BuildProviderCollection class to examine build providers in a configuration file. Para obtener más información sobre cómo configurar un proveedor de compilación, consulte el elemento buildProviders para compilation (esquema de configuración de ASP.net).For more information about configuring a build provider, see buildProviders Element for compilation (ASP.NET Settings Schema).

Para implementar un proveedor de compilación que genera código fuente para un tipo de archivo personalizado, derive una BuildProviderclase de e invalide el GenerateCode método para generar el código fuente para el tipo de archivo compatible.To implement a build provider that generates source code for a custom file type, derive a class from BuildProvider, and override the GenerateCode method to generate source code for the supported file type. El origen generado se agrega al AssemblyBuilder objeto en forma de un gráfico CodeDOM o como contenido que representa un archivo de código fuente físico.The generated source is added to the AssemblyBuilder object in the form of a CodeDOM graph, or as content that represents a physical source code file. Si el proveedor de compilación requiere un lenguaje de programación específico, CodeCompilerType invalide la CompilerType propiedad para devolver un objeto para el lenguaje de programación compatible.If the build provider requires a specific programming language, override the CodeCompilerType property to return a CompilerType object for the supported programming language. Si el proveedor de compilación no requiere un lenguaje de programación concreto, no invalide la CodeCompilerType propiedad; use la implementación de la clase base, que indica que el proveedor de compilación puede usar cualquier lenguaje .NET Framework, como Visual Basic o. C#If the build provider does not require a specific programming language, do not override the CodeCompilerType property; use the base class implementation, which indicates that the build provider can use any .NET Framework language, such as Visual Basic or C#.

Para implementar un proveedor de compilación que genera código fuente para el contenido Web, derive una BuildProvider clase de e GetGeneratedType invalide el Type método para devolver el de BuildProviderla clase generada por.To implement a build provider that generates source code for Web content, derive a class from BuildProvider and override the GetGeneratedType method to return the Type for the class generated by BuildProvider. Invalide el GenerateCode método para generar el código fuente para el tipo proporcionado por el archivo compatible.Override the GenerateCode method to generate source code for the type provided by the supported file.

Nota

La adición de BuildProvider una clase personalizada al archivo Web. config funciona en un sitio web de ASP.net, pero no funciona en un proyecto de aplicación Web ASP.net.Adding a customized BuildProvider class to the Web.config file works in an ASP.NET Web site but does not work in an ASP.NET Web application project. En un proyecto de aplicación Web, el código generado por la BuildProvider clase no se puede incluir en la aplicación.In a Web application project, the code that is generated by the BuildProvider class cannot be included in the application. Para obtener más información, vea información general sobre la precompilación de proyectos de aplicaciones Web de ASP.net.For more information, see ASP.NET Web Application Project Precompilation Overview.

Constructores

BuildProvider() BuildProvider() BuildProvider() BuildProvider()

Inicializa una nueva instancia de la clase BuildProvider.Initializes a new instance of the BuildProvider class.

Propiedades

CodeCompilerType CodeCompilerType CodeCompilerType CodeCompilerType

Representa el tipo de compilador utilizado por un proveedor de generación para generar código fuente para un tipo de archivo personalizado.Represents the compiler type used by a build provider to generate source code for a custom file type.

ReferencedAssemblies ReferencedAssemblies ReferencedAssemblies ReferencedAssemblies

Representa los ensamblados que se van a compilar con el código fuente que genera el proveedor de compilación.Represents the assemblies to compile with the source generated by the build provider.

VirtualPath VirtualPath VirtualPath VirtualPath

Representa el archivo que la implementación de este proveedor de compilación va a crear.Represents the file to be built by this build provider implementation.

VirtualPathDependencies VirtualPathDependencies VirtualPathDependencies VirtualPathDependencies

Representa una colección de rutas de acceso virtual que se debe generar antes de que el proveedor de compilación genere el código.Represents a collection of virtual paths that must be built before the build provider generates code.

Métodos

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina si el objeto especificado es igual al objeto actual.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GenerateCode(AssemblyBuilder) GenerateCode(AssemblyBuilder) GenerateCode(AssemblyBuilder) GenerateCode(AssemblyBuilder)

Genera 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.Generates source code for the virtual path of the build provider, and adds the source code to a specified assembly builder.

GetCodeCompileUnit(IDictionary) GetCodeCompileUnit(IDictionary) GetCodeCompileUnit(IDictionary) GetCodeCompileUnit(IDictionary)

Representa el contenedor para el gráfico CodeDOM generado.Represents the container for the generated CodeDOM graph.

GetCustomString(CompilerResults) GetCustomString(CompilerResults) GetCustomString(CompilerResults) GetCustomString(CompilerResults)

Genera una cadena que se va a conservar en el ensamblado compilado.Generates a string to be persisted in the compiled assembly.

GetDefaultCompilerType() GetDefaultCompilerType() GetDefaultCompilerType() GetDefaultCompilerType()

Devuelve la configuración del compilador para el lenguaje predeterminado de la aplicación.Returns the compiler settings for the default language in the application.

GetDefaultCompilerTypeForLanguage(String) GetDefaultCompilerTypeForLanguage(String) GetDefaultCompilerTypeForLanguage(String) GetDefaultCompilerTypeForLanguage(String)

Devuelve la configuración del compilador para el proveedor de compilación basándose en el lenguaje especificado.Returns the compiler settings for the build provider based on the specified language.

GetGeneratedType(CompilerResults) GetGeneratedType(CompilerResults) GetGeneratedType(CompilerResults) GetGeneratedType(CompilerResults)

Devuelve un tipo generado por el proveedor de compilación a partir de la ruta de acceso virtual.Returns a type generated by the build provider from the virtual path.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Sirve como la función hash predeterminada.Serves as the default hash function.

(Inherited from Object)
GetResultFlags(CompilerResults) GetResultFlags(CompilerResults) GetResultFlags(CompilerResults) GetResultFlags(CompilerResults)

Devuelve un valor que indica las acciones necesarias cuando se compila una ruta de acceso virtual.Returns a value indicating actions required when a virtual path is built.

GetType() GetType() GetType() GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

(Inherited from Object)
OpenReader() OpenReader() OpenReader() OpenReader()

Abre un lector de texto para leer de la ruta de acceso virtual del objeto de proveedor de compilación actual.Opens a text reader for reading from the virtual path of the current build provider object.

OpenReader(String) OpenReader(String) OpenReader(String) OpenReader(String)

Abre un lector de texto para leer de una ruta de acceso virtual especificada.Opens a text reader for reading from a specified virtual path.

OpenStream() OpenStream() OpenStream() OpenStream()

Abre una secuencia para leer la ruta de acceso virtual del objeto de proveedor de compilación actual.Opens a stream for reading the virtual path of the current build provider object.

OpenStream(String) OpenStream(String) OpenStream(String) OpenStream(String)

Abre una secuencia para leer de una ruta de acceso virtual especificada.Opens a stream for reading from a specified virtual path.

ProcessCompileErrors(CompilerResults) ProcessCompileErrors(CompilerResults) ProcessCompileErrors(CompilerResults) ProcessCompileErrors(CompilerResults)

Cuando se invalida en una clase derivada, permite revisar los mensajes del error del compilador para que pueda modificarlos para proporcionar más información.When overridden in a derived class, enables you to review compiler error messages so that you can modify them to provide more information.

RegisterBuildProvider(String, Type) RegisterBuildProvider(String, Type) RegisterBuildProvider(String, Type) RegisterBuildProvider(String, Type)

Registra un proveedor de compilación.Registers a build provider.

ToString() ToString() ToString() ToString()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Inherited from Object)

Se aplica a

Consulte también: