BuildProvider Sınıf

Tanım

ASP.NET derleme ortamında kaynak kodu oluşturmak için bir dizi özellik ve yöntem tanımlar. Bu sınıf soyut.

public ref class BuildProvider abstract
public abstract class BuildProvider
type BuildProvider = class
Public MustInherit Class BuildProvider
Devralma
BuildProvider
Türetilmiş

Örnekler

Aşağıdaki kod örneği, soyut BuildProvider temel sınıftan devralan basit bir derleme sağlayıcısı uygulamasını gösterir. Derleme sağlayıcısı, temel sınıfın CodeCompilerType, GetGeneratedTypeve GenerateCode üyelerini geçersiz kılar. Örnek, sınıfın SampleClassGenerator uygulamasını içermez. Daha fazla bilgi için bkz. sınıfa CodeCompileUnit genel bakış.

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

Açıklamalar

ASP.NET derleme ortamı, bir uygulama içindeki farklı dosya türleri için kaynak kodu oluşturmak üzere nesneleri kullanır BuildProvider . 'den BuildProvider türetilen sınıflar genellikle dosyalar, Web sayfaları, kaynaklar ve diğer özel öğeler için kaynak kodu sağlar.

Genellikle sınıfının bir örneğini BuildProvider doğrudan oluşturmazsınız. Bunun yerine, öğesinden BuildProvidertüretilen bir sınıf uygular ve uygulamayı ASP.NET derleme ortamında kullanmak üzere yapılandırabilirsiniz BuildProvider .

sınıfının örnekleri BuildProvider , derlenmiş bir derlemede bir veya daha fazla dosya oluşturmak için nesnelerle birlikte AssemblyBuilder kullanılır. Bir BuildProvider örnek, tek tek dosyalar için uygun dilde kaynak kodu oluşturur ve AssemblyBuilder nesnesi her BuildProvider örneğin katkıda bulunduğu kaynağı tek bir derlemede birleştirir.

ASP.NET derleme ortamı, bir uygulama içinde dosya oluşturmak için sınıfının örneklerini BuildProvider kullanır. VirtualPath sınıfının özelliğiBuildProvider, oluşturulacak dosyanın yolunu gösterir. Bir uygulama içindeki her dosyanın dosya uzantısı, ilgili derleme sağlayıcısına eşlenir. ASP.NET derleme ortamı, dosya uzantısını temel alarak her dosya için bir BuildProvider örnek başlatır ve dosya için kaynak kodu oluşturmak için yöntemlerini kullanır BuildProvider . ASP.NET derleme ortamı, bir veya daha fazla dosyadan derleme oluştururken tercih edilen derleyici diline ve dosyanın BuildProvider bağlamını temel alan bir AssemblyBuilder nesneyi yöntemlere geçirir; böylece örnek, dosyasının BuildProvider kaynak kodunu genel derlemeye katkıda bulunabilir.

bir ASP.NET uygulama içindeki bir dosya türü için özel derleme eylemleri tanımlamak için, öğesinden BuildProviderbir sınıf türetmelisiniz, dosya türünü oluşturmak için türetilmiş sınıftaki üyeleri uygulamanız ve derleme sağlayıcısını uygulama yapılandırma dosyasındaki ilgili dosya uzantısı için yapılandırmanız gerekir.

add öğesi, desteklenen dosyalar için dosya uzantısını ve derleme sağlayıcısının kod dosyalarını, Web dosyalarını, kaynak dosyalarını veya tüm dosyaları destekleyip desteklemediğini belirtir. type Derleme sağlayıcısı uygulamasının tam tür adını belirtmek için özniteliğini kullanın. Derleme sağlayıcısının BuildProviderAppliesToAttribute App_Code dizinindeki dosyalara mı, web içeriği dizinindeki dosyalara mı, genel kaynaklara mı yoksa yerel kaynaklara mı yoksa tüm dosyalara mı uygulanacağını belirtmek için sınıfını kullanın. extension sınıfının desteklediği dosyaları tanımlamak için kullanılan dosya uzantısını belirtmek için özniteliğini BuildProvider kullanın. Bir yapılandırma dosyasında derleme BuildProviderCollection sağlayıcılarını incelemek için sınıfını kullanın. Derleme sağlayıcısı yapılandırma hakkında daha fazla bilgi için bkz. derleme için buildProviders Öğesi (ASP.NET Ayarlar Şeması).

Özel bir dosya türü için kaynak kodu oluşturan bir derleme sağlayıcısı uygulamak için, öğesinden BuildProviderbir sınıf türetin ve yöntemini geçersiz kılarak GenerateCode desteklenen dosya türü için kaynak kodu oluşturun. Oluşturulan kaynak nesneye AssemblyBuilder CodeDOM grafı biçiminde veya fiziksel bir kaynak kod dosyasını temsil eden içerik olarak eklenir. Derleme sağlayıcısı belirli bir programlama dili gerektiriyorsa, desteklenen programlama dili için bir CompilerType nesne döndürmek için özelliğini geçersiz kılınCodeCompilerType. Derleme sağlayıcısı belirli bir programlama dili gerektirmiyorsa özelliğini geçersiz kılmayınCodeCompilerType; derleme sağlayıcısının Visual Basic veya C# gibi herhangi bir .NET Framework dili kullanabileceğini gösteren temel sınıf uygulamasını kullanın.

Web içeriği için kaynak kodu oluşturan bir derleme sağlayıcısı uygulamak için öğesinden BuildProvider bir sınıf türetin ve tarafından BuildProvideroluşturulan sınıfın değerini döndürmek Type için yöntemini geçersiz kılınGetGeneratedType. GenerateCode Desteklenen dosya tarafından sağlanan tür için kaynak kodu oluşturmak için yöntemini geçersiz kılın.

Not

Web.config dosyasına özelleştirilmiş BuildProvider bir sınıf eklemek bir ASP.NET Web sitesinde çalışır ancak ASP.NET Web uygulaması projesinde çalışmaz. Web uygulaması projesinde, sınıfı tarafından BuildProvider oluşturulan kod uygulamaya eklenemez. Daha fazla bilgi için bkz. ASP.NET Web Uygulaması Project Ön Derlemeye Genel Bakış.

Oluşturucular

BuildProvider()

BuildProvider sınıfının yeni bir örneğini başlatır.

Özellikler

CodeCompilerType

Bir derleme sağlayıcısı tarafından özel bir dosya türü için kaynak kodu oluşturmak için kullanılan derleyici türünü temsil eder.

ReferencedAssemblies

Derleme sağlayıcısı tarafından oluşturulan kaynakla derlenecek derlemeleri temsil eder.

VirtualPath

Bu derleme sağlayıcısı uygulaması tarafından oluşturulacak dosyayı temsil eder.

VirtualPathDependencies

Derleme sağlayıcısı kod oluşturmadan önce oluşturulması gereken sanal yol koleksiyonunu temsil eder.

Yöntemler

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GenerateCode(AssemblyBuilder)

Derleme sağlayıcısının sanal yolu için kaynak kodu oluşturur ve kaynak kodunu belirtilen derleme oluşturucusunun öğesine ekler.

GetCodeCompileUnit(IDictionary)

Oluşturulan CodeDOM grafı için kapsayıcıyı temsil eder.

GetCustomString(CompilerResults)

Derlenmiş derlemede kalıcı hale getirmek için bir dize oluşturur.

GetDefaultCompilerType()

Uygulamadaki varsayılan dil için derleyici ayarlarını döndürür.

GetDefaultCompilerTypeForLanguage(String)

Belirtilen dile göre derleme sağlayıcısının derleyici ayarlarını döndürür.

GetGeneratedType(CompilerResults)

Sanal yoldan derleme sağlayıcısı tarafından oluşturulan bir tür döndürür.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetResultFlags(CompilerResults)

Sanal yol oluşturulduğunda gereken eylemleri gösteren bir değer döndürür.

GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
OpenReader()

Geçerli derleme sağlayıcısı nesnesinin sanal yolundan okumak için bir metin okuyucu açar.

OpenReader(String)

Belirtilen sanal yoldan okumak için bir metin okuyucu açar.

OpenStream()

Geçerli derleme sağlayıcısı nesnesinin sanal yolunu okumak için bir akış açar.

OpenStream(String)

Belirtilen sanal yoldan okumak için bir akış açar.

ProcessCompileErrors(CompilerResults)

Türetilmiş bir sınıfta geçersiz kılındığında, derleyici hata iletilerini gözden geçirerek bunları daha fazla bilgi sağlayacak şekilde değiştirmenize olanak tanır.

RegisterBuildProvider(String, Type)

Bir derleme sağlayıcısı kaydeder.

ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır

Ayrıca bkz.