AssemblyBuilder Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt einen Container zum Erstellen einer Assembly aus einem oder mehreren virtuellen Pfaden in einem ASP.NET-Projekt bereit.
public ref class AssemblyBuilder
public class AssemblyBuilder
type AssemblyBuilder = class
Public Class AssemblyBuilder
- Vererbung
-
AssemblyBuilder
Beispiele
Im folgenden Codebeispiel wird eine einfache Buildanbieterimplementierung veranschaulicht, die von der abstrakten BuildProvider Basisklasse erbt. Der Buildanbieter überschreibt die CodeCompilerTypeElemente GetGeneratedTypeund GenerateCode Member der Basisklasse.
In der GenerateCode Methodenimplementierung fügt der Buildanbieter den generierten Code für die Assemblykompilierung mithilfe der CreateCodeFile Methode hinzu. Das Beispiel enthält nicht die Implementierung der SampleClassGenerator
Klasse. Weitere Informationen finden Sie unter 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
Hinweise
Instanzen der AssemblyBuilder Klasse werden mit BuildProvider Klassenmethoden verwendet, um eine oder mehrere Dateien in eine kompilierte Assembly zu erstellen.
Die BuildProvider Klasse definiert Buildfunktionen für einzelne Dateien, und die AssemblyBuilder Klasse kombiniert den Quellcode, der von jeder BuildProvider Instanz in eine einzelne Assembly beigetragen hat. Die ASP.NET Buildumgebung übergibt beim Erstellen einer Assembly aus einer oder mehreren Dateien ein AssemblyBuilder Objekt an die BuildProvider Methoden, sodass jede BuildProvider Instanz Quellcode für seine Datei zur Gesamtassembly beitragen kann.
Die ASP.NET Buildumgebung bestimmt die Sprache und den Compiler, die für Dateien innerhalb des Projekts erforderlich sind, basierend auf der BuildProvider.CodeCompilerType Eigenschaft. Die Buildumgebung gruppiert Dateien basierend auf ihren Compilereinstellungen und erstellt eine Assembly aus Dateien, die denselben Compiler erfordern.
Die CodeDomProvider Eigenschaft gibt die CodeDomProvider Implementierung an, die die ASP.NET Buildumgebung verwendet, um eine Assembly aus dem Quellcode zu kompilieren, der von jeder BuildProvider Implementierung beigetragen hat.
Ein BuildProvider Objekt trägt Quellcode in Form eines CodeDOM-Diagramms mithilfe der AddCodeCompileUnit Methode bei. Ein BuildProvider Objekt trägt den Quellcode bei, der in einer physischen Datei mithilfe der CreateCodeFile Methode gespeichert ist.
Nachdem jedes BuildProvider Objekt mit den entsprechenden AssemblyBuilder Methoden Quellcode beiträgt, verwendet die ASP.NET Buildumgebung die Klasse, um den AssemblyBuilder gesammelten Quellcode in eine Assembly zu kompilieren.
Eigenschaften
CodeDomProvider |
Ruft den Compiler auf, der zum Erstellen von Quellcode in einer Assembly verwendet wird. |
Methoden
AddAssemblyReference(Assembly) |
Fügt eine Assembly hinzu, auf die für eine Datei generierter Quellcode verweist. |
AddCodeCompileUnit(BuildProvider, CodeCompileUnit) |
Fügt der Assembly Quellcode in Form eines CodeDOM-Diagramms hinzu. |
CreateCodeFile(BuildProvider) |
Ermöglicht es einem Buildanbieter, eine temporäre Quelldatei zu erstellen und die Quelldatei in die Assemblykompilierung einzubeziehen. |
CreateEmbeddedResource(BuildProvider, String) |
Ermöglicht es einem Buildanbieter, eine Ressourcendatei zu erstellen und in die Assemblykompilierung einzubeziehen. |
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
GenerateTypeFactory(String) |
Fügt eine schnelle Objektfactoryvorlage für einen Typ in die kompilierte Assembly ein. |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetTempFilePhysicalPath(String) |
Generiert einen Pfad für eine temporäre Datei. |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |