BuildProvider BuildProvider BuildProvider BuildProvider Class

Definizione

Definisce un set di proprietà e metodi per la generazione di codice sorgente all'interno dell'ambiente di compilazione ASP.NET.Defines a set of properties and methods for generating source code within the ASP.NET build environment. Questa classe è astratta.This class is abstract.

public ref class BuildProvider abstract
public abstract class BuildProvider
type BuildProvider = class
Public MustInherit Class BuildProvider
Ereditarietà
BuildProviderBuildProviderBuildProviderBuildProvider
Derivato

Esempi

L'esempio di codice seguente illustra un'implementazione del provider di compilazione semplice, che eredita dalla classe astratta BuildProvider classe di base.The following code example illustrates a simple build provider implementation, inheriting from the abstract BuildProvider base class. Il provider di compilazione esegue l'override di CodeCompilerType, GetGeneratedType, e GenerateCode membri della classe di base.The build provider overrides the CodeCompilerType, GetGeneratedType, and GenerateCode members of the base class. L'esempio non include l'implementazione del SampleClassGenerator classe.The example does not include the implementation of the SampleClassGenerator class. Per altre informazioni, vedere il CodeCompileUnit Cenni preliminari sulla classe.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 Microsoft.VisualBasic
Imports System
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

Commenti

Utilizzi di ambiente di compilazione ASP.NET BuildProvider oggetti per generare codice sorgente per diversi tipi di file all'interno di un'applicazione.The ASP.NET build environment uses BuildProvider objects to generate source code for different file types within an application. Le classi derivate da BuildProvider prevalentemente forniscono il codice sorgente per i file, le pagine Web, risorse e altri elementi personalizzati.Classes derived from BuildProvider predominantly provide source code for files, Web pages, resources, and other custom items.

In genere, non si crea un'istanza di BuildProvider direttamente alla classe.Typically, you do not create an instance of the BuildProvider class directly. È invece necessario implementare una classe che deriva da BuildProvidere configurare il BuildProvider ambiente di compilazione di implementazione per l'utilizzo all'interno di ASP.NET.Instead, you implement a class that derives from BuildProvider, and configure the BuildProvider implementation for use within the ASP.NET build environment.

Le istanze del BuildProvider classe vengono utilizzate con AssemblyBuilder oggetti per compilare uno o più file in un assembly compilato.Instances of the BuildProvider class are used with AssemblyBuilder objects to build one or more files into a compiled assembly. Oggetto BuildProvider istanza genera codice sorgente nella lingua appropriata per i singoli file e le AssemblyBuilder oggetto combina il codice sorgente reso disponibile da ogni BuildProvider istanza in un unico assembly.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.

L'ambiente di compilazione ASP.NET Usa istanze del BuildProvider classe per la creazione di file all'interno di un'applicazione.The ASP.NET build environment uses instances of the BuildProvider class to build files within an application. Il VirtualPath proprietà del BuildProvider classe indica il percorso del file da compilare.The VirtualPath property of the BuildProvider class indicates the path of the file to be built. L'estensione del file di ogni file all'interno di un'applicazione viene eseguito il mapping a un provider di compilazione corrispondente.The file extension of each file within an application is mapped to a corresponding build provider. ASP.NET ambiente di compilazione Inizializza un BuildProvider dell'istanza per ogni file in base all'estensione di file e Usa il BuildProvider metodi per generare codice sorgente per il file.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. Viene passato di compilazione ASP.NET un' AssemblyBuilder oggetto in base al linguaggio preferito del compilatore e il contesto del file dal BuildProvider metodi quando si compila un assembly da uno o più file, in modo che il BuildProvider istanza possa fornire codice sorgente per il rispettivo file di assembly globale.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.

Per definire le azioni di compilazione personalizzato per un tipo di file all'interno di un'applicazione ASP.NET, è necessario derivare una classe dalla classe BuildProvider, implementare i membri all'interno della classe derivata per la creazione del tipo di file e configurare il provider di compilazione per l'estensione di file corrispondente all'interno del file di configurazione dell'applicazione.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.

La specifica l'estensione di file di file supportati, e se il provider di compilazione supporta i file di codice, file Web, i file di risorse o tutti i file.The specifies the file extension for supported files, and whether the build provider supports code files, Web files, resource files or all files. Usare il type attributo per specificare il nome completo del tipo di implementazione del provider di compilazione.Use the type attribute to specify the fully qualified type name of the build provider implementation. Usare il BuildProviderAppliesToAttribute classe per specificare se il provider di compilazione si applica ai file nella directory App_Code, ai file in una directory del contenuto Web, le risorse locali o globali a o a tutti i file.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. Usare la extension attributo per specificare l'estensione del file usato per identificare i file che il BuildProvider supportate dalla classe.Use the extension attribute to specify the file extension used to identify files that the BuildProvider class supports. Usare il BuildProviderCollection classe per esaminare i provider di compilazione in un file di configurazione.Use the BuildProviderCollection class to examine build providers in a configuration file. Per altre informazioni sulla configurazione di un provider di compilazione, vedere elemento buildProviders per compilation (Schema delle impostazioni ASP.NET).For more information about configuring a build provider, see buildProviders Element for compilation (ASP.NET Settings Schema).

Per implementare un provider di compilazione che genera codice sorgente per un tipo di file personalizzati, derivare una classe dalla classe BuildProvidered eseguire l'override di GenerateCode metodo per generare codice sorgente per il tipo di file supportati.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. Il codice sorgente generato viene aggiunto per il AssemblyBuilder oggetto sotto forma di un grafo CodeDOM, o come contenuto che rappresenta un file di codice di origine fisico.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. Se il provider di compilazione richiede un linguaggio di programmazione specifico, eseguire l'override di CodeCompilerType proprietà per restituire un CompilerType oggetto per il linguaggio di programmazione supportato.If the build provider requires a specific programming language, override the CodeCompilerType property to return a CompilerType object for the supported programming language. Se il provider di compilazione non richiede un linguaggio di programmazione specifico, non esegue l'override di CodeCompilerType proprietà; Usa l'implementazione della classe base, che indica che il provider di compilazione può utilizzare qualsiasi linguaggio .NET Framework, ad esempio 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#.

Per implementare un provider di compilazione che genera il codice sorgente per il contenuto Web, derivare una classe dalla classe BuildProvider ed eseguire l'override di GetGeneratedType per restituire il Type per la classe generata da BuildProvider.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. Eseguire l'override di GenerateCode metodo per generare codice sorgente per il tipo fornito dal file supportato.Override the GenerateCode method to generate source code for the type provided by the supported file.

Nota

Aggiunta di un oggetto personalizzato BuildProvider classe nel file Web. config funziona in un sito Web ASP.NET, ma non in un progetto di applicazione 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. In un progetto di applicazione Web, il codice generato dal BuildProvider classe non può essere incluso nell'applicazione.In a Web application project, the code that is generated by the BuildProvider class cannot be included in the application. Per altre informazioni, vedere Cenni preliminari sulla precompilazione ASP.NET Web Application progetto.For more information, see ASP.NET Web Application Project Precompilation Overview.

Costruttori

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

Inizializza una nuova istanza della classe BuildProvider.Initializes a new instance of the BuildProvider class.

Proprietà

CodeCompilerType CodeCompilerType CodeCompilerType CodeCompilerType

Rappresenta il tipo di compilatore utilizzato da un provider di compilazione per la generazione di codice sorgente per un tipo di file personalizzato.Represents the compiler type used by a build provider to generate source code for a custom file type.

ReferencedAssemblies ReferencedAssemblies ReferencedAssemblies ReferencedAssemblies

Rappresenta gli assembly da compilare con il codice sorgente generato dal provider di compilazione.Represents the assemblies to compile with the source generated by the build provider.

VirtualPath VirtualPath VirtualPath VirtualPath

Rappresenta il file che deve essere compilato da questa implementazione del provider di compilazione.Represents the file to be built by this build provider implementation.

VirtualPathDependencies VirtualPathDependencies VirtualPathDependencies VirtualPathDependencies

Rappresenta un insieme di percorsi virtuali che devono essere compilati prima della generazione di codice da parte del provider di compilazione.Represents a collection of virtual paths that must be built before the build provider generates code.

Metodi

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

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

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

Genera codice sorgente per il percorso virtuale del provider di compilazione e aggiunge tale codice al generatore di assembly specificato.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)

Rappresenta il contenitore per il grafico CodeDOM generato.Represents the container for the generated CodeDOM graph.

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

Genera una stringa che deve essere mantenuta nell'assembly compilato.Generates a string to be persisted in the compiled assembly.

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

Restituisce le impostazioni del compilatore per il linguaggio predefinito nell'applicazione.Returns the compiler settings for the default language in the application.

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

Restituisce le impostazioni del compilatore per il provider di compilazione in base al linguaggio specificato.Returns the compiler settings for the build provider based on the specified language.

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

Restituisce un tipo generato dal provider di compilazione dal percorso virtuale.Returns a type generated by the build provider from the virtual path.

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

Funge da funzione hash predefinita.Serves as the default hash function.

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

Restituisce un valore che indica le azioni necessarie quando viene generato un percorso virtuale.Returns a value indicating actions required when a virtual path is built.

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

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

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

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

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

Apre un visualizzatore di testo per la lettura dal percorso virtuale dell'oggetto corrente del provider di compilazione.Opens a text reader for reading from the virtual path of the current build provider object.

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

Apre un visualizzatore di testo per la lettura dal percorso virtuale specificato.Opens a text reader for reading from a specified virtual path.

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

Apre un flusso per la lettura del percorso virtuale dell'oggetto corrente del provider di compilazione.Opens a stream for reading the virtual path of the current build provider object.

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

Apre un flusso per la lettura da un percorso virtuale specificato.Opens a stream for reading from a specified virtual path.

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

Quando è sottoposto a override in una classe derivata, consente di rivedere i messaggi di errore del compilatore in modo da poterli modificarli per fornire ulteriori informazioni.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 provider di compilazione.Registers a build provider.

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

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Inherited from Object)

Si applica a

Vedi anche