BuildProvider Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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) |