BuildProvider Classe

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à
BuildProvider
Derivato

Esempi

Nell'esempio di codice seguente viene illustrata un'implementazione del provider di compilazione semplice, che BuildProvider eredita dalla classe di base astratta.The following code example illustrates a simple build provider implementation, inheriting from the abstract BuildProvider base class. Il provider di compilazione esegue CodeCompilerTypel' GetGeneratedTypeoverride dei GenerateCode membri, e della classe di base.The build provider overrides the CodeCompilerType, GetGeneratedType, and GenerateCode members of the base class. Nell'esempio non è inclusa l'implementazione della SampleClassGenerator classe.The example does not include the implementation of the SampleClassGenerator class. Per ulteriori informazioni, vedere Cenni CodeCompileUnit 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 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

L'ambiente di compilazione ASP.NET BuildProvider usa 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 forniscono prevalentemente codice sorgente per file, 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 direttamente un'istanza della BuildProvider classe.Typically, you do not create an instance of the BuildProvider class directly. Viene invece implementata una classe che deriva da BuildProvidere viene configurata l' BuildProvider implementazione per l'utilizzo all'interno dell'ambiente di compilazione 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 BuildProvider istanze della classe vengono utilizzate con AssemblyBuilder gli 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. Un' BuildProvider istanza genera codice sorgente nella lingua appropriata per i singoli file e l' AssemblyBuilder oggetto combina l'origine fornita da ogni BuildProvider istanza in un singolo 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 le istanze BuildProvider della classe per compilare i file all'interno di un'applicazione.The ASP.NET build environment uses instances of the BuildProvider class to build files within an application. La VirtualPath proprietàBuildProvider della classe indica il percorso del file da compilare.The VirtualPath property of the BuildProvider class indicates the path of the file to be built. Viene eseguito il mapping dell'estensione di file di ogni file all'interno di un'applicazione a un provider di compilazione corrispondente.The file extension of each file within an application is mapped to a corresponding build provider. L'ambiente di compilazione ASP.NET inizializza BuildProvider un'istanza per ogni file in base all'estensione di file e USA BuildProvider i metodi per generare il 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. L'ambiente di compilazione ASP.NET passa AssemblyBuilder un oggetto in base al linguaggio del compilatore preferito e al contesto del file ai BuildProvider metodi durante la compilazione di un assembly da uno o più file, in BuildProvider modo che l'istanza possa contribuire codice sorgente per il file nell'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 azioni di compilazione personalizzate per un tipo di file all'interno di un'applicazione ASP.NET, è necessario derivare una classe da BuildProvider, implementare i membri all'interno della classe derivata per compilare il tipo di file e configurare il provider di compilazione per l'estensione di file corrispondente. nel 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.

Specifica l'estensione di file per i file supportati e indica se il provider di compilazione supporta file di codice, file Web, 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. Utilizzare l' type attributo per specificare il nome completo del tipo dell'implementazione del provider di compilazione.Use the type attribute to specify the fully qualified type name of the build provider implementation. Utilizzare la BuildProviderAppliesToAttribute classe per specificare se il provider di compilazione si applica ai file nella directory App_Code, a file in una directory contenuto Web, a risorse globali o locali 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. Utilizzare l' extension attributo per specificare l'estensione di file utilizzata per identificare i file BuildProvider supportati dalla classe.Use the extension attribute to specify the file extension used to identify files that the BuildProvider class supports. Utilizzare la 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 ulteriori informazioni sulla configurazione di un provider di compilazione, vedere elemento buildProviders per la compilazione (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 personalizzato, derivare BuildProvideruna classe da ed GenerateCode eseguire l'override del metodo per generare il codice sorgente per il tipo di file supportato.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. L'origine generata viene aggiunta all' AssemblyBuilder oggetto sotto forma di grafico CodeDOM o come contenuto che rappresenta un file di codice sorgente 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, CodeCompilerType eseguire l'override della CompilerType proprietà per restituire un 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 eseguire l' CodeCompilerType override della proprietà. utilizzare l'implementazione della classe di base, che indica che il provider di compilazione può utilizzare qualsiasi linguaggio .NET Framework C#, ad esempio Visual Basic o.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 codice sorgente per il contenuto Web, derivare BuildProvider una classe da GetGeneratedType ed eseguire l'override Type del metodo per restituire l' BuildProvideroggetto per la classe generata da.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' GenerateCode override del metodo per generare il 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

L'aggiunta di BuildProvider una classe personalizzata al file Web. config funziona in un sito Web ASP.NET, ma non funziona 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 dalla 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 Panoramica della precompilazione del progetto di applicazione Web ASP.NET.For more information, see ASP.NET Web Application Project Precompilation Overview.

Costruttori

BuildProvider()

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

Proprietà

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

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

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

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)

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

(Ereditato da Object)
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)

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

GetCustomString(CompilerResults)

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

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)

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)

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

GetHashCode()

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

(Ereditato da Object)
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()

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

(Ereditato da Object)
MemberwiseClone()

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

(Ereditato da Object)
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)

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

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)

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

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)

Registra un provider di compilazione.Registers a build provider.

ToString()

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

(Ereditato da Object)

Si applica a

Vedi anche