Sdílet prostřednictvím


BuildProvider Třída

Definice

Definuje sadu vlastností a metod pro generování zdrojového kódu v prostředí ASP.NET sestavení. 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é převážně BuildProvider poskytují zdrojový kód pro soubory, webové stránky, prostředky a další vlastní položky.

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

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

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

Element 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 zprostředkovatel 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 extension určete příponu 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í naleznete v tématu buildProviders – element pro kompilaci (ASP.NET nastavení schématu).

Chcete-li implementovat zprostředkovatele sestavení, který generuje zdrojový kód pro vlastní typ souboru, odvodit třídu z BuildProvidera přepsat metodu GenerateCode pro vygenerování zdrojového kódu pro podporovaný typ souboru. Vygenerovaný zdroj se přidá do objektu AssemblyBuilder ve formě grafu CodeDOM nebo jako obsah, který představuje soubor fyzického zdrojového kódu. Pokud zprostředkovatel sestavení vyžaduje konkrétní 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, jako je Visual Basic nebo C#.

Chcete-li implementovat zprostředkovatele sestavení, který generuje zdrojový kód pro webový obsah, odvodit třídu z BuildProvider a přepsat metodu TypeGetGeneratedType vrátit pro třídu generované 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 ASP.NET webu, ale nefunguje v projektu webové aplikace ASP.NET. V projektu webové aplikace nelze do aplikace zahrnout kód vygenerovaný BuildProvider třídou. Další informace naleznete v tématu ASP.NET Přehled předkompilace projektu webové aplikace.

Konstruktory

Name Description
BuildProvider()

Inicializuje novou instanci BuildProvider třídy.

Vlastnosti

Name Description
CodeCompilerType

Představuje typ kompilátoru používaný zprostředkovatelem 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 vytvořeny před tím, než zprostředkovatel sestavení vygeneruje kód.

Metody

Name Description
Equals(Object)

Určuje, zda je zadaný objekt roven 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 bude uchovávat 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 vytvoření virtuální cesty.

GetType()

Získá Type aktuální instance.

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

Vytvoří mělkou kopii aktuálního 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ě umožňuje 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é