AssemblyBuilder クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ASP.NET プロジェクト内の 1 つ以上の仮想パスからアセンブリをビルドするためのコンテナーを提供します。
public ref class AssemblyBuilder
public class AssemblyBuilder
type AssemblyBuilder = class
Public Class AssemblyBuilder
- 継承
-
AssemblyBuilder
例
次のコード例は、抽象 BuildProvider 基本クラスから継承する単純なビルド プロバイダーの実装を示しています。 ビルド プロバイダーは、基底クラスの CodeCompilerType、 GetGeneratedType、および GenerateCode メンバーをオーバーライドします。
メソッドの GenerateCode 実装では、ビルド プロバイダーは、 メソッドを使用してアセンブリコンパイル用に生成されたコードを CreateCodeFile 追加します。 この例には、 クラスの実装は SampleClassGenerator
含まれていません。 詳細については、「CodeCompileUnit」を参照してください。
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()
{
// Set the compiler to use Visual Basic.
_compilerType = GetDefaultCompilerTypeForLanguage("C#");
}
// Return the internal CompilerType member
// defined in this implementation.
public override CompilerType CodeCompilerType
{
get { return _compilerType; }
}
// Define a method that returns details for the
// code compiler for this build provider.
public string GetCompilerTypeDetails()
{
StringBuilder details = new StringBuilder("");
if (_compilerType != null)
{
// Format a string that contains the code compiler
// implementation, and various compiler details.
details.AppendFormat("CodeDomProvider type: {0}; \n",
_compilerType.CodeDomProviderType.ToString());
details.AppendFormat("Compiler debug build = {0}; \n",
_compilerType.CompilerParameters.IncludeDebugInformation.ToString());
details.AppendFormat("Compiler warning level = {0}; \n",
_compilerType.CompilerParameters.WarningLevel.ToString());
if (_compilerType.CompilerParameters.CompilerOptions != null)
{
details.AppendFormat("Compiler options: {0}; \n",
_compilerType.CompilerParameters.CompilerOptions.ToString());
}
}
return details.ToString();
}
// 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.CreateGenerator().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 a method that returns details for the
' code compiler for this build provider.
Public Function GetCompilerTypeDetails() As String
Dim details As StringBuilder = New StringBuilder("")
If Not _compilerType Is Nothing Then
' Format a string that contains the code compiler
' implementation, and various compiler details.
details.AppendFormat("CodeDomProvider type: {0}; ", _
_compilerType.CodeDomProviderType.ToString())
details.AppendFormat("Compiler debug build = {0}; ", _
_compilerType.CompilerParameters.IncludeDebugInformation.ToString())
details.AppendFormat("Compiler warning level = {0}; ", _
_compilerType.CompilerParameters.WarningLevel.ToString())
If Not _compilerType.CompilerParameters.CompilerOptions Is Nothing Then
details.AppendFormat("Compiler options: {0}; ", _
_compilerType.CompilerParameters.CompilerOptions.ToString())
End If
End If
Return details.ToString()
End Function
' 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.CreateGenerator().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
注釈
クラスのインスタンスは AssemblyBuilder 、1 つ以上のファイルをコンパイル済みアセンブリにビルドするために、クラス メソッドと共 BuildProvider に使用されます。
クラスは BuildProvider 個々のファイルのビルド機能を定義し、クラスは AssemblyBuilder 各 BuildProvider インスタンスによって提供されるソース コードを 1 つのアセンブリに結合します。 ASP.NET ビルド環境では、1 つ以上のファイルからアセンブリをビルドするときに オブジェクトを メソッドにBuildProvider渡AssemblyBuilderし、各BuildProviderインスタンスがファイルのソース コードをアセンブリ全体に提供できるようにします。
ASP.NET ビルド環境では、 プロパティに基づいて、プロジェクト内のファイルに必要な言語とコンパイラが BuildProvider.CodeCompilerType 決定されます。 ビルド環境では、コンパイラ設定に基づいてファイルをグループ化し、同じコンパイラを必要とするファイルからアセンブリをビルドします。
プロパティはCodeDomProvider、ASP.NET ビルド環境が各BuildProvider実装によって提供されるソース コードからアセンブリをコンパイルするために使用する実装を示CodeDomProviderします。
オブジェクトは BuildProvider 、 メソッドを使用して CodeDOM グラフの形式でソース コードを AddCodeCompileUnit 提供します。 オブジェクトは BuildProvider 、 メソッドを使用して物理ファイルに格納されたソース コードを CreateCodeFile 提供します。
各 BuildProvider オブジェクトが適切な AssemblyBuilder メソッドを使用してソース コードを提供した後、ASP.NET ビルド環境では クラスを AssemblyBuilder 使用して、収集されたソース コードをアセンブリにコンパイルします。
プロパティ
CodeDomProvider |
ソース コードをアセンブリにビルドするためのコンパイラを取得します。 |
メソッド
AddAssemblyReference(Assembly) |
1 つのファイルについて生成されたソース コードが参照するアセンブリを追加します。 |
AddCodeCompileUnit(BuildProvider, CodeCompileUnit) |
アセンブリのソース コードを CodeDOM グラフの形式で追加します。 |
CreateCodeFile(BuildProvider) |
ビルド プロバイダーが一時的なソース ファイルを作成して、そのソース ファイルをアセンブリのコンパイルに含めることができるようにします。 |
CreateEmbeddedResource(BuildProvider, String) |
ビルド プロバイダーがリソース ファイルを作成して、そのファイルをアセンブリ コンパイルに含めることができるようにします。 |
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
GenerateTypeFactory(String) |
型に対する高速オブジェクトのファクトリ テンプレートを、コンパイル対象アセンブリに挿入します。 |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetTempFilePhysicalPath(String) |
一時ファイルのパスを生成します。 |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
適用対象
こちらもご覧ください
.NET