BuildProvider クラス

定義

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
継承
BuildProvider
派生

次のコード例は、抽象 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 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

注釈

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から派生したクラスを実装し、ASP.NET ビルド環境内で使用する BuildProvider の実装を構成します。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. BuildProvider インスタンスは、個々のファイルに対して適切な言語でソースコードを生成します。また、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. BuildProvider クラスの VirtualPath プロパティは、作成するファイルのパスを示します。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 ビルド環境は、1つ以上のファイルからアセンブリを構築するときに、優先コンパイラ言語とファイルのコンテキストに基づいて AssemblyBuilder オブジェクトを BuildProvider メソッドに渡します。これにより、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. ビルドプロバイダーの構成の詳細については、「コンパイルのための Buildproviders 要素 (ASP.NET Settings Schema)」を参照してください。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. 生成されたソースは、CodeDOM グラフの形式で AssemblyBuilder オブジェクト、または物理ソースコードファイルを表すコンテンツとして追加されます。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 メソッドをオーバーライドして、BuildProviderによって生成されたクラスの Type を返します。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.

注意

ASP.NET Web サイトでは、カスタマイズされた BuildProvider クラスを web.config ファイルに追加することはできますが、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.

コンストラクター

BuildProvider()

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

プロパティ

CodeCompilerType

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

ReferencedAssemblies

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

VirtualPath

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

VirtualPathDependencies

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

メソッド

Equals(Object)

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

(継承元 Object)
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)

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

GetCustomString(CompilerResults)

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

GetDefaultCompilerType()

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

GetDefaultCompilerTypeForLanguage(String)

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

GetGeneratedType(CompilerResults)

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

GetHashCode()

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

(継承元 Object)
GetResultFlags(CompilerResults)

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

GetType()

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

(継承元 Object)
MemberwiseClone()

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

(継承元 Object)
OpenReader()

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

OpenReader(String)

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

OpenStream()

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

OpenStream(String)

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

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)

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

ToString()

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

(継承元 Object)

適用対象

こちらもご覧ください