BuildProvider Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menentukan sekumpulan properti dan metode untuk menghasilkan kode sumber dalam lingkungan build ASP.NET. Kelas ini abstrak.
public ref class BuildProvider abstract
public abstract class BuildProvider
type BuildProvider = class
Public MustInherit Class BuildProvider
- Warisan
-
BuildProvider
- Turunan
Contoh
Contoh kode berikut mengilustrasikan implementasi penyedia build sederhana, mewarisi dari kelas dasar abstrak BuildProvider . Penyedia build mengambil alih CodeCompilerType, , GetGeneratedTypedan GenerateCode anggota kelas dasar. Contoh tidak termasuk implementasi SampleClassGenerator kelas. Untuk informasi selengkapnya, lihat gambaran CodeCompileUnit umum kelas.
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
Keterangan
Lingkungan build ASP.NET menggunakan BuildProvider objek untuk menghasilkan kode sumber untuk berbagai jenis file dalam aplikasi. Kelas yang berasal dari BuildProvider sebagian besar menyediakan kode sumber untuk file, halaman Web, sumber daya, dan item kustom lainnya.
Biasanya, Anda tidak membuat instans BuildProvider kelas secara langsung. Sebagai gantinya, Anda menerapkan kelas yang berasal dari BuildProvider, dan mengonfigurasi BuildProvider implementasi untuk digunakan dalam lingkungan build ASP.NET.
Instans BuildProvider kelas digunakan dengan AssemblyBuilder objek untuk membangun satu atau beberapa file ke dalam rakitan yang dikompilasi. BuildProvider Instans menghasilkan kode sumber dalam bahasa yang sesuai untuk file individual, dan AssemblyBuilder objek menggabungkan sumber yang dikontribusikan oleh setiap BuildProvider instans ke dalam satu rakitan.
Lingkungan build ASP.NET menggunakan instans BuildProvider kelas untuk membangun file dalam aplikasi. Properti VirtualPath kelas BuildProvider menunjukkan jalur file yang akan dibangun. Ekstensi file dari setiap file dalam aplikasi dipetakan ke penyedia build yang sesuai. Lingkungan build ASP.NET menginisialisasi instans BuildProvider untuk setiap file berdasarkan ekstensi file, dan menggunakan BuildProvider metode untuk menghasilkan kode sumber untuk file. Lingkungan build ASP.NET meneruskan AssemblyBuilder objek berdasarkan bahasa pengkompilasi pilihan dan konteks file ke BuildProvider metode saat membangun perakitan dari satu atau beberapa file, sehingga BuildProvider instans dapat menyumbangkan kode sumber untuk filenya ke perakitan keseluruhan.
Untuk menentukan tindakan build kustom untuk jenis file dalam aplikasi ASP.NET, Anda harus mendapatkan kelas dari BuildProvider, menerapkan anggota dalam kelas turunan untuk membangun jenis file, dan mengonfigurasi penyedia build untuk ekstensi file yang sesuai dalam file konfigurasi aplikasi.
Elemen add menentukan ekstensi file untuk file yang didukung, dan apakah penyedia build mendukung file kode, file Web, file sumber daya, atau semua file.
type Gunakan atribut untuk menentukan nama jenis implementasi penyedia build yang sepenuhnya memenuhi syarat.
BuildProviderAppliesToAttribute Gunakan kelas untuk menentukan apakah penyedia build berlaku untuk file di direktori App_Code, ke file dalam direktori konten Web, ke sumber daya global atau lokal, atau ke semua file.
extension Gunakan atribut untuk menentukan ekstensi file yang digunakan untuk mengidentifikasi file yang BuildProvider didukung kelas.
BuildProviderCollection Gunakan kelas untuk memeriksa penyedia build dalam file konfigurasi. Untuk informasi selengkapnya tentang mengonfigurasi penyedia build, lihat buildProviders Element untuk kompilasi (ASP.NET Skema Pengaturan).
Untuk menerapkan penyedia build yang menghasilkan kode sumber untuk jenis file kustom, dapatkan kelas dari BuildProvider, dan ambil alih GenerateCode metode untuk menghasilkan kode sumber untuk jenis file yang didukung. Sumber yang dihasilkan ditambahkan ke AssemblyBuilder objek dalam bentuk grafik CodeDOM, atau sebagai konten yang mewakili file kode sumber fisik. Jika penyedia build memerlukan bahasa pemrograman tertentu, ambil alih CodeCompilerType properti untuk mengembalikan CompilerType objek untuk bahasa pemrograman yang didukung. Jika penyedia build tidak memerlukan bahasa pemrograman tertentu, jangan ambil alih CodeCompilerType properti; gunakan implementasi kelas dasar, yang menunjukkan bahwa penyedia build dapat menggunakan bahasa .NET Framework apa pun, seperti Visual Basic atau C#.
Untuk menerapkan penyedia build yang menghasilkan kode sumber untuk konten Web, dapatkan kelas dari BuildProvider dan ambil alih GetGeneratedType metode untuk mengembalikan Type kelas yang dihasilkan oleh BuildProvider. Ambil alih GenerateCode metode untuk menghasilkan kode sumber untuk jenis yang disediakan oleh file yang didukung.
Nota
Menambahkan kelas yang dikustomisasi BuildProvider ke file Web.config berfungsi di situs Web ASP.NET tetapi tidak berfungsi dalam proyek aplikasi Web ASP.NET. Dalam proyek aplikasi Web, kode yang dihasilkan oleh BuildProvider kelas tidak dapat disertakan dalam aplikasi. Untuk informasi selengkapnya, lihat Gambaran Umum Kompilasi Proyek Aplikasi Web ASP.NET.
Konstruktor
| Nama | Deskripsi |
|---|---|
| BuildProvider() |
Menginisialisasi instans baru dari kelas BuildProvider. |
Properti
| Nama | Deskripsi |
|---|---|
| CodeCompilerType |
Mewakili jenis pengkompilasi yang digunakan oleh penyedia build untuk menghasilkan kode sumber untuk jenis file kustom. |
| ReferencedAssemblies |
Mewakili rakitan untuk dikompilasi dengan sumber yang dihasilkan oleh penyedia build. |
| VirtualPath |
Mewakili file yang akan dibangun oleh implementasi penyedia build ini. |
| VirtualPathDependencies |
Mewakili kumpulan jalur virtual yang harus dibangun sebelum penyedia build menghasilkan kode. |
Metode
| Nama | Deskripsi |
|---|---|
| Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
| GenerateCode(AssemblyBuilder) |
Menghasilkan kode sumber untuk jalur virtual penyedia build, dan menambahkan kode sumber ke penyusun rakitan tertentu. |
| GetCodeCompileUnit(IDictionary) |
Mewakili kontainer untuk grafik CodeDOM yang dihasilkan. |
| GetCustomString(CompilerResults) |
Menghasilkan string yang akan dipertahankan dalam rakitan yang dikompilasi. |
| GetDefaultCompilerType() |
Mengembalikan pengaturan pengkompilasi untuk bahasa default dalam aplikasi. |
| GetDefaultCompilerTypeForLanguage(String) |
Mengembalikan pengaturan pengkompilasi untuk penyedia build berdasarkan bahasa yang ditentukan. |
| GetGeneratedType(CompilerResults) |
Mengembalikan jenis yang dihasilkan oleh penyedia build dari jalur virtual. |
| GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
| GetResultFlags(CompilerResults) |
Mengembalikan nilai yang menunjukkan tindakan yang diperlukan saat jalur virtual dibuat. |
| GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| OpenReader() |
Membuka pembaca teks untuk membaca dari jalur virtual objek penyedia build saat ini. |
| OpenReader(String) |
Membuka pembaca teks untuk membaca dari jalur virtual tertentu. |
| OpenStream() |
Membuka aliran untuk membaca jalur virtual objek penyedia build saat ini. |
| OpenStream(String) |
Membuka aliran untuk membaca dari jalur virtual tertentu. |
| ProcessCompileErrors(CompilerResults) |
Saat ditimpa di kelas turunan, memungkinkan Anda meninjau pesan kesalahan pengkompilasi sehingga Anda dapat memodifikasinya untuk memberikan informasi lebih lanjut. |
| RegisterBuildProvider(String, Type) |
Mendaftarkan penyedia build. |
| ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |