BuildProvider BuildProvider BuildProvider BuildProvider Class

Definition

ASP.NET ビルド環境でソース コードを生成するためのプロパティとメソッドのセットを定義します。 Defines a set of properties and methods for generating source code within the ASP.NET build environment. このクラスは抽象クラスです。 This class is abstract.

public ref class BuildProvider abstract
public abstract class BuildProvider
type BuildProvider = class
Public MustInherit Class BuildProvider
Inheritance
BuildProviderBuildProviderBuildProviderBuildProvider
Derived

Examples

次のコード例は、抽象から継承する単純なビルド プロバイダーの実装を示しています。BuildProvider基本クラス。The following code example illustrates a simple build provider implementation, inheriting from the abstract BuildProvider base class. ビルド プロバイダーは、 CodeCompilerTypeGetGeneratedType、およびGenerateCode基底クラスのメンバー。The build provider overrides the CodeCompilerType, GetGeneratedType, and GenerateCode members of the base class. 例では、実装を含まない、SampleClassGeneratorクラス。The example does not include the implementation of the SampleClassGenerator class. 詳細については、次を参照してください。、CodeCompileUnitクラスの概要。For more information, see the CodeCompileUnit class overview.

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 Microsoft.VisualBasic
Imports System
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

Remarks

ASP.NET ビルド環境はBuildProviderアプリケーション内の別のファイルの種類のソース コードを生成するオブジェクト。The ASP.NET build environment uses BuildProvider objects to generate source code for different file types within an application. 派生したクラスBuildProvider主ファイル、Web ページ、リソース、およびその他のカスタムの項目のソース コードを提供します。Classes derived from BuildProvider predominantly provide source code for files, Web pages, resources, and other custom items.

通常のインスタンス作成しない、BuildProviderクラスを直接します。Typically, you do not create an instance of the BuildProvider class directly. 派生したクラスを実装する代わりに、 BuildProvider、し、構成、 BuildProvider ASP.NET 内で使用する実装環境を構築します。Instead, you implement a class that derives from BuildProvider, and configure the BuildProvider implementation for use within the ASP.NET build environment.

インスタンス、BuildProviderクラスを併用AssemblyBuilderコンパイルされたアセンブリに 1 つまたは複数のファイルをビルドするオブジェクト。Instances of the BuildProvider class are used with AssemblyBuilder objects to build one or more files into a compiled assembly. ABuildProviderインスタンスは、個々 のファイルの適切な言語でソース コードを生成し、AssemblyBuilderオブジェクトそれぞれに起因するソースを結合するBuildProviderインスタンスを 1 つのアセンブリにします。A BuildProvider instance generates source code in the appropriate language for individual files, and the AssemblyBuilder object combines the source contributed by each BuildProvider instance into a single assembly.

ASP.NET ビルド環境のインスタンスを使用して、BuildProviderクラスで、アプリケーション内のファイルをビルドします。The ASP.NET build environment uses instances of the BuildProvider class to build files within an application. VirtualPathのプロパティ、BuildProviderクラスをビルドするファイルのパスを示します。The VirtualPath property of the BuildProvider class indicates the path of the file to be built. アプリケーション内の各ファイルのファイル拡張子は、対応するビルド プロバイダーにマップされます。The file extension of each file within an application is mapped to a corresponding build provider. ASP.NET ビルド環境を初期化します、BuildProviderインスタンスの各ファイルは、ファイルの拡張機能に基づいておりを使用して、BuildProviderファイルのソース コードを生成するメソッド。The ASP.NET build environment initializes a BuildProvider instance for each file based on the file extension, and uses the BuildProvider methods to generate source code for the file. ASP.NET ビルド環境、AssemblyBuilder優先コンパイラ言語とするファイルのコンテキストに基づいて、オブジェクト、BuildProviderメソッドの 1 つまたは複数のファイルからアセンブリを作成するときにできるように、BuildProviderインスタンスが貢献できます全体的なアセンブリにそのファイルのソース コード。The ASP.NET build environment passes an AssemblyBuilder object based on the preferred compiler language and the context of the file to the BuildProvider methods when building an assembly from one or more files, so that the BuildProvider instance can contribute source code for its file to the overall assembly.

ASP.NET アプリケーション内のファイルの種類のカスタム ビルド アクションを定義するからクラスを派生する必要がありますBuildProviderファイルの種類を構築するため、派生クラス内のメンバーを実装し、対応するファイルの拡張機能のビルド プロバイダーの構成アプリケーションの構成ファイル。To define custom build actions for a file type within an ASP.NET application, you must derive a class from BuildProvider, implement members within the derived class for building the file type, and configure the build provider for the corresponding file extension within the application configuration file.

サポートされているファイルのファイル拡張子を指定し、ビルド プロバイダーがコード ファイル、Web のファイル、リソース ファイル、またはすべてのファイルをサポートするかどうか。The specifies the file extension for supported files, and whether the build provider supports code files, Web files, resource files or all files. 使用して、typeビルド プロバイダーの実装の完全修飾型名を指定する属性。Use the type attribute to specify the fully qualified type name of the build provider implementation. 使用して、BuildProviderAppliesToAttributeクラスを App_Code ディレクトリ内のファイル、Web コンテンツ ディレクトリ、グローバルまたはローカルのリソース内のファイルまたはすべてのファイルにビルド プロバイダーが適用されるかどうかを指定します。Use the BuildProviderAppliesToAttribute class to specify whether the build provider applies to files in the App_Code directory, to files in a Web content directory, to global or local resources, or to all files. 使用して、extensionファイルを識別するために使用されるファイル拡張子を指定する属性、BuildProviderクラスでサポートします。Use the extension attribute to specify the file extension used to identify files that the BuildProvider class supports. 使用して、BuildProviderCollectionを調べるクラスが構成ファイル内のプロバイダーをビルドします。Use the BuildProviderCollection class to examine build providers in a configuration file. ビルド プロバイダーを構成する方法の詳細については、次を参照してください。 (ASP.NET 設定スキーマ) compilation の buildProviders 要素します。For more information about configuring a build provider, see buildProviders Element for compilation (ASP.NET Settings Schema).

カスタム ファイルの種類のソース コードを生成するビルド プロバイダーを実装する派生クラスをBuildProvider、上書き、GenerateCodeサポートされているファイルの種類のソース コードを生成するメソッド。To implement a build provider that generates source code for a custom file type, derive a class from BuildProvider, and override the GenerateCode method to generate source code for the supported file type. 生成されたソースを追加、AssemblyBuilderの CodeDOM グラフの場合、または物理的なソース コード ファイルを表すコンテンツとしてフォーム内のオブジェクト。The generated source is added to the AssemblyBuilder object in the form of a CodeDOM graph, or as content that represents a physical source code file. ビルド プロバイダーは、特定のプログラミング言語を必要とする場合は、オーバーライド、CodeCompilerTypeプロパティを返す、CompilerTypeサポートされているプログラミング言語のオブジェクト。If the build provider requires a specific programming language, override the CodeCompilerType property to return a CompilerType object for the supported programming language. ビルド プロバイダーに特定のプログラミング言語が必要としない場合は上書きすれば、CodeCompilerTypeプロパティです。 使用して基底クラスの実装のビルド プロバイダーが Visual Basic や c# など、任意の .NET Framework 言語を使用できることを示します。If the build provider does not require a specific programming language, do not override the CodeCompilerType property; use the base class implementation, which indicates that the build provider can use any .NET Framework language, such as Visual Basic or C#.

Web コンテンツのソース コードを生成するビルド プロバイダーを実装する派生クラスをBuildProviderをオーバーライドし、GetGeneratedTypeを返すメソッドをTypeによって生成されたクラスのBuildProviderします。To implement a build provider that generates source code for Web content, derive a class from BuildProvider and override the GetGeneratedType method to return the Type for the class generated by BuildProvider. 上書き、GenerateCodeサポートされているファイルに含まれる型のソース コードを生成します。Override the GenerateCode method to generate source code for the type provided by the supported file.

注意

追加、カスタマイズされたBuildProviderクラスは、Web.config ファイルには、ASP.NET Web サイトで動作しますが、ASP.NET Web アプリケーション プロジェクトでは機能しません。Adding a customized BuildProvider class to the Web.config file works in an ASP.NET Web site but does not work in an ASP.NET Web application project. Web アプリケーション プロジェクトによって生成されるコードで、BuildProviderクラスは、アプリケーションに含めることはできません。In a Web application project, the code that is generated by the BuildProvider class cannot be included in the application. 詳細については、次を参照してください。 ASP.NET Web アプリケーション プロジェクト プリコンパイルの概要します。For more information, see ASP.NET Web Application Project Precompilation Overview.

Constructors

BuildProvider() BuildProvider() BuildProvider() BuildProvider()

BuildProvider クラスの新しいインスタンスを初期化します。 Initializes a new instance of the BuildProvider class.

Properties

CodeCompilerType CodeCompilerType CodeCompilerType CodeCompilerType

ビルド プロバイダーがカスタム ファイルの種類のソース コードを生成するために使用するコンパイラ タイプを表します。 Represents the compiler type used by a build provider to generate source code for a custom file type.

ReferencedAssemblies ReferencedAssemblies ReferencedAssemblies ReferencedAssemblies

ビルド プロバイダーが生成するソース コードと共にコンパイルするアセンブリを表します。 Represents the assemblies to compile with the source generated by the build provider.

VirtualPath VirtualPath VirtualPath VirtualPath

このビルド プロバイダーの実装で構築されるファイルを表します。 Represents the file to be built by this build provider implementation.

VirtualPathDependencies VirtualPathDependencies VirtualPathDependencies VirtualPathDependencies

ビルド プロバイダーがコードを生成する前に構築する必要がある仮想パスのコレクションを表します。 Represents a collection of virtual paths that must be built before the build provider generates code.

Methods

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。 Determines whether the specified object is equal to the current object.

(Inherited from Object)
GenerateCode(AssemblyBuilder) GenerateCode(AssemblyBuilder) GenerateCode(AssemblyBuilder) GenerateCode(AssemblyBuilder)

ビルド プロバイダーの仮想パスのソース コードを生成し、そのソース コードを指定のアセンブリ ビルダーに追加します。 Generates source code for the virtual path of the build provider, and adds the source code to a specified assembly builder.

GetCodeCompileUnit(IDictionary) GetCodeCompileUnit(IDictionary) GetCodeCompileUnit(IDictionary) GetCodeCompileUnit(IDictionary)

生成された CodeDOM グラフのコンテナーを表します。 Represents the container for the generated CodeDOM graph.

GetCustomString(CompilerResults) GetCustomString(CompilerResults) GetCustomString(CompilerResults) GetCustomString(CompilerResults)

コンパイルしたアセンブリに保存される文字列を生成します。 Generates a string to be persisted in the compiled assembly.

GetDefaultCompilerType() GetDefaultCompilerType() GetDefaultCompilerType() GetDefaultCompilerType()

アプリケーション内の既定言語に関するコンパイラの設定値を返します。 Returns the compiler settings for the default language in the application.

GetDefaultCompilerTypeForLanguage(String) GetDefaultCompilerTypeForLanguage(String) GetDefaultCompilerTypeForLanguage(String) GetDefaultCompilerTypeForLanguage(String)

指定された言語に基づいて、ビルド プロバイダーのコンパイラ設定値を返します。 Returns the compiler settings for the build provider based on the specified language.

GetGeneratedType(CompilerResults) GetGeneratedType(CompilerResults) GetGeneratedType(CompilerResults) GetGeneratedType(CompilerResults)

仮想パスからビルド プロバイダーによって生成される型を返します。 Returns a type generated by the build provider from the virtual path.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。 Serves as the default hash function.

(Inherited from Object)
GetResultFlags(CompilerResults) GetResultFlags(CompilerResults) GetResultFlags(CompilerResults) GetResultFlags(CompilerResults)

仮想パスがビルドされたときに必要なアクションを示す値を返します。 Returns a value indicating actions required when a virtual path is built.

GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。 Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。 Creates a shallow copy of the current Object.

(Inherited from Object)
OpenReader() OpenReader() OpenReader() OpenReader()

現在のビルド プロバイダー オブジェクトの仮想パスから読み込むためのテキスト リーダーを開きます。 Opens a text reader for reading from the virtual path of the current build provider object.

OpenReader(String) OpenReader(String) OpenReader(String) OpenReader(String)

指定された仮想パスから読み込むためのテキスト リーダーを開きます。 Opens a text reader for reading from a specified virtual path.

OpenStream() OpenStream() OpenStream() OpenStream()

現在のビルド プロバイダー オブジェクトの仮想パスを読み込むためのストリームを開きます。 Opens a stream for reading the virtual path of the current build provider object.

OpenStream(String) OpenStream(String) OpenStream(String) OpenStream(String)

指定された仮想パスから読み込むためのストリームを開きます。 Opens a stream for reading from a specified virtual path.

ProcessCompileErrors(CompilerResults) ProcessCompileErrors(CompilerResults) ProcessCompileErrors(CompilerResults) ProcessCompileErrors(CompilerResults)

派生クラスでオーバーライドされると、コンパイラのエラー メッセージを見直すことができ、より多くの情報を提供するようにメッセージを変更できます。 When overridden in a derived class, enables you to review compiler error messages so that you can modify them to provide more information.

RegisterBuildProvider(String, Type) RegisterBuildProvider(String, Type) RegisterBuildProvider(String, Type) RegisterBuildProvider(String, Type)

ビルド プロバイダーを登録します。 Registers a build provider.

ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。 Returns a string that represents the current object.

(Inherited from Object)

Applies to

See Also