Sdílet prostřednictvím


BuildProvider Třída

Definice

Definuje sadu vlastností a metod pro generování zdrojového kódu v prostředí sestavení ASP.NET. Tato třída je abstraktní.

public ref class BuildProvider abstract
public abstract class BuildProvider
type BuildProvider = class
Public MustInherit Class BuildProvider
Dědičnost
BuildProvider
Odvozené

Příklady

Následující příklad kódu znázorňuje jednoduchou implementaci zprostředkovatele sestavení, která dědí z abstraktní BuildProvider základní třídy. Zprostředkovatel sestavení přepíše CodeCompilerType, GetGeneratedTypea GenerateCode členy základní třídy. Příklad nezahrnuje implementaci SampleClassGenerator třídy. Další informace najdete v přehledu CodeCompileUnit třídy.

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

Poznámky

Prostředí sestavení ASP.NET používá BuildProvider objekty k vygenerování zdrojového kódu pro různé typy souborů v aplikaci. Třídy odvozené z BuildProvider převážně poskytují zdrojový kód pro soubory, webové stránky, prostředky a další vlastní položky.

Obvykle nevytvoříte instanci třídy BuildProvider přímo. Místo toho implementujete třídu odvozenou od BuildProvidera nakonfigurujete BuildProvider implementaci pro použití v prostředí sestavení ASP.NET.

BuildProvider Instance třídy se používají s AssemblyBuilder objekty k sestavení jednoho nebo více souborů do kompilovaného sestavení. BuildProvider Instance vygeneruje zdrojový kód v příslušném jazyce pro jednotlivé soubory a AssemblyBuilder objekt zkombinuje zdroj, který jednotlivé BuildProvider instance přispěly, do jednoho sestavení.

Prostředí sestavení ASP.NET používá instance BuildProvider třídy k sestavení souborů v rámci aplikace. VirtualPath Vlastnost BuildProvider třídy označuje cestu k souboru, který má být sestaven. Přípona souboru každého souboru v aplikaci je namapována na odpovídajícího zprostředkovatele sestavení. Prostředí sestavení ASP.NET inicializuje instanci pro každý soubor na základě přípony souboru a používá BuildProvider metody k vygenerování BuildProvider zdrojového kódu souboru. Prostředí sestavení ASP.NET předává AssemblyBuilder objekt založený na upřednostňovaném jazyku kompilátoru a kontextu souboru BuildProvider do metod při sestavování sestavení z jednoho nebo více souborů, aby BuildProvider instance mohl přispívat zdrojovým kódem pro soubor do celkového sestavení.

Chcete-li definovat vlastní akce sestavení pro typ souboru v rámci ASP.NET aplikace, musíte odvodit třídu z BuildProvider, implementovat členy v odvozené třídě pro sestavení typu souboru a nakonfigurovat zprostředkovatele sestavení pro odpovídající příponu souboru v rámci konfiguračního souboru aplikace.

Prvek add určuje příponu souboru pro podporované soubory a zda poskytovatel sestavení podporuje soubory kódu, webové soubory, soubory prostředků nebo všechny soubory. Pomocí atributu type zadejte plně kvalifikovaný název typu implementace zprostředkovatele sestavení. BuildProviderAppliesToAttribute Pomocí třídy určete, zda se poskytovatel sestavení vztahuje na soubory v adresáři App_Code, na soubory v adresáři webového obsahu, na globální nebo místní prostředky nebo na všechny soubory. Pomocí atributu určete příponu extension souboru použitou k identifikaci souborů, které BuildProvider třída podporuje. BuildProviderCollection Pomocí třídy můžete prozkoumat zprostředkovatele sestavení v konfiguračním souboru. Další informace o konfiguraci zprostředkovatele sestavení najdete v tématu buildProviders – element pro kompilaci (ASP.NET Nastavení schéma).

Pokud chcete implementovat zprostředkovatele sestavení, který generuje zdrojový kód pro vlastní typ souboru, odvozujte třídu od BuildProvidera přepište metodu GenerateCode pro generování zdrojového kódu pro podporovaný typ souboru. Vygenerovaný zdroj se přidá do objektu AssemblyBuilder ve formě grafu CodeDOM nebo jako obsah představující soubor fyzického zdrojového kódu. Pokud zprostředkovatel sestavení vyžaduje určitý programovací jazyk, přepište CodeCompilerType vlastnost tak, aby vrátil CompilerType objekt pro podporovaný programovací jazyk. Pokud zprostředkovatel sestavení nevyžaduje konkrétní programovací jazyk, nepřepište CodeCompilerType vlastnost. Použijte implementaci základní třídy, která označuje, že zprostředkovatel sestavení může používat libovolný jazyk rozhraní .NET Framework, například Visual Basic nebo C#.

Pokud chcete implementovat zprostředkovatele sestavení, který generuje zdrojový kód pro webový obsah, odvozujte třídu z BuildProvider metody a přepište GetGeneratedType metodu Type , která vrátí třídu vygenerovanou BuildProvider. Přepište metodu GenerateCode pro vygenerování zdrojového kódu pro typ poskytnutý podporovaným souborem.

Poznámka

Přidání přizpůsobené BuildProvider třídy do souboru Web.config funguje na webu ASP.NET, ale nefunguje v projektu webové aplikace ASP.NET. V projektu webové aplikace nelze kód vygenerovaný BuildProvider třídou zahrnout do aplikace. Další informace najdete v tématu ASP.NET Přehled předkompilace webových aplikací Project.

Konstruktory

BuildProvider()

Inicializuje novou instanci BuildProvider třídy.

Vlastnosti

CodeCompilerType

Představuje typ kompilátoru používaný poskytovatelem sestavení k vygenerování zdrojového kódu pro vlastní typ souboru.

ReferencedAssemblies

Představuje sestavení, která se mají zkompilovat se zdrojem vygenerovaným poskytovatelem sestavení.

VirtualPath

Představuje soubor, který má být sestaven touto implementací zprostředkovatele sestavení.

VirtualPathDependencies

Představuje kolekci virtuálních cest, které musí být sestaveny před vygenerování kódu zprostředkovatele sestavení.

Metody

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GenerateCode(AssemblyBuilder)

Vygeneruje zdrojový kód pro virtuální cestu zprostředkovatele sestavení a přidá zdrojový kód do zadaného tvůrce sestavení.

GetCodeCompileUnit(IDictionary)

Představuje kontejner pro vygenerovaný graf CodeDOM.

GetCustomString(CompilerResults)

Vygeneruje řetězec, který se má zachovat v kompilovaném sestavení.

GetDefaultCompilerType()

Vrátí nastavení kompilátoru pro výchozí jazyk v aplikaci.

GetDefaultCompilerTypeForLanguage(String)

Vrátí nastavení kompilátoru pro zprostředkovatele sestavení na základě zadaného jazyka.

GetGeneratedType(CompilerResults)

Vrátí typ vygenerovaný poskytovatelem sestavení z virtuální cesty.

GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetResultFlags(CompilerResults)

Vrátí hodnotu označující akce požadované při vytváření virtuální cesty.

GetType()

Type Získá aktuální instanci.

(Zděděno od Object)
MemberwiseClone()

Vytvoří použádnou kopii aktuálního souboru Object.

(Zděděno od Object)
OpenReader()

Otevře čtečku textu pro čtení z virtuální cesty aktuálního objektu zprostředkovatele sestavení.

OpenReader(String)

Otevře čtečku textu pro čtení ze zadané virtuální cesty.

OpenStream()

Otevře datový proud pro čtení virtuální cesty aktuálního objektu zprostředkovatele sestavení.

OpenStream(String)

Otevře datový proud pro čtení ze zadané virtuální cesty.

ProcessCompileErrors(CompilerResults)

Při přepsání v odvozené třídě vám umožní zkontrolovat chybové zprávy kompilátoru, abyste je mohli upravit tak, aby poskytovaly další informace.

RegisterBuildProvider(String, Type)

Zaregistruje zprostředkovatele sestavení.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro

Viz také