ModuleBuilder.DefineDocument-Methode
Definiert ein Dokument als Quelle.
Namespace: System.Reflection.Emit
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public Function DefineDocument ( _
url As String, _
language As Guid, _
languageVendor As Guid, _
documentType As Guid _
) As ISymbolDocumentWriter
'Usage
Dim instance As ModuleBuilder
Dim url As String
Dim language As Guid
Dim languageVendor As Guid
Dim documentType As Guid
Dim returnValue As ISymbolDocumentWriter
returnValue = instance.DefineDocument(url, language, languageVendor, documentType)
public ISymbolDocumentWriter DefineDocument (
string url,
Guid language,
Guid languageVendor,
Guid documentType
)
public:
ISymbolDocumentWriter^ DefineDocument (
String^ url,
Guid language,
Guid languageVendor,
Guid documentType
)
public ISymbolDocumentWriter DefineDocument (
String url,
Guid language,
Guid languageVendor,
Guid documentType
)
public function DefineDocument (
url : String,
language : Guid,
languageVendor : Guid,
documentType : Guid
) : ISymbolDocumentWriter
Parameter
- url
Der URL für das Dokument.
- language
Die GUID, die die Sprache des Dokuments bezeichnet. Dies kann NULL sein.
- languageVendor
Die GUID, die den Compilerhersteller des Dokuments bezeichnet. Dies kann NULL sein.
- documentType
Die GUID, die den Dokumenttyp bezeichnet. Dies kann NULL sein.
Rückgabewert
Ein ISymbolDocumentWriter-Objekt, das das definierte Dokument darstellt.
Ausnahmen
Ausnahmetyp | Bedingung |
---|---|
url ist NULL (Nothing in Visual Basic). |
|
Diese Methode wird für ein dynamisches Modul aufgerufen, das kein Debug-Modul ist. |
Beispiel
Das folgende Codebeispiel veranschaulicht die Verwendung von DefineDocument zum Anfügen eines externen Symboldokuments (in diesem Fall eine unformatierte IL-Datei) an ein dynamisches Modul.
Imports System
Imports System.Reflection
Imports System.Reflection.Emit
Imports System.Resources
Imports System.Diagnostics.SymbolStore
Namespace ILGenServer
Public Class CodeGenerator
Private myModuleBuilder As ModuleBuilder
Private myAssemblyBuilder As AssemblyBuilder
Public Sub New()
' Get the current application domain for the current thread.
Dim currentDomain As AppDomain = AppDomain.CurrentDomain
Dim myAssemblyName As New AssemblyName()
myAssemblyName.Name = "TempAssembly"
' Define a dynamic assembly in the current domain.
myAssemblyBuilder = currentDomain.DefineDynamicAssembly(myAssemblyName, _
AssemblyBuilderAccess.RunAndSave)
' Define a dynamic module in "TempAssembly" assembly.
myModuleBuilder = myAssemblyBuilder.DefineDynamicModule("TempModule", "Resource.mod", True)
' Define a document for source.on 'TempModule' module.
Dim myDocument As ISymbolDocumentWriter = myModuleBuilder.DefineDocument("RTAsm.il", _
SymDocumentType.Text, SymLanguageType.ILAssembly, SymLanguageVendor.Microsoft)
Console.WriteLine("The object representing the defined document is:" + _
CObj(myDocument).ToString())
End Sub 'New
End Class 'CodeGenerator
Public Class CallerClass
Public Shared Sub Main()
Dim myGenerator As New CodeGenerator()
End Sub 'Main
End Class 'CallerClass
End Namespace 'ILGenServer
using System;
using System.Reflection;
using System.Reflection.Emit;
using System.Resources;
using System.Diagnostics.SymbolStore;
namespace ILGenServer
{
public class CodeGenerator
{
ModuleBuilder myModuleBuilder ;
AssemblyBuilder myAssemblyBuilder ;
public CodeGenerator()
{
// Get the current application domain for the current thread.
AppDomain currentDomain = AppDomain.CurrentDomain;
AssemblyName myAssemblyName = new AssemblyName();
myAssemblyName.Name = "TempAssembly";
// Define a dynamic assembly in the current domain.
myAssemblyBuilder =
currentDomain.DefineDynamicAssembly
(myAssemblyName, AssemblyBuilderAccess.RunAndSave);
// Define a dynamic module in "TempAssembly" assembly.
myModuleBuilder =
myAssemblyBuilder.DefineDynamicModule("TempModule","Resource.mod",true);
// Define a document for source.on 'TempModule' module.
ISymbolDocumentWriter myDocument =
myModuleBuilder.DefineDocument("RTAsm.il", SymDocumentType.Text,
SymLanguageType.ILAssembly,SymLanguageVendor.Microsoft);
Console.WriteLine("The object representing the defined document is:"+myDocument);
}
}
public class CallerClass
{
public static void Main()
{
CodeGenerator myGenerator = new CodeGenerator();
}
}
}
using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
using namespace System::Resources;
using namespace System::Diagnostics::SymbolStore;
public ref class CodeGenerator
{
private:
ModuleBuilder^ myModuleBuilder;
AssemblyBuilder^ myAssemblyBuilder;
public:
CodeGenerator()
{
// Get the current application domain for the current thread.
AppDomain^ currentDomain = AppDomain::CurrentDomain;
AssemblyName^ myAssemblyName = gcnew AssemblyName;
myAssemblyName->Name = "TempAssembly";
// Define a dynamic assembly in the current domain.
myAssemblyBuilder = currentDomain->DefineDynamicAssembly( myAssemblyName, AssemblyBuilderAccess::RunAndSave );
// Define a dynamic module in S"TempAssembly" assembly.
myModuleBuilder = myAssemblyBuilder->DefineDynamicModule( "TempModule", "Resource.mod", true );
// Define a document for source.on 'TempModule' module.
ISymbolDocumentWriter^ myDocument = myModuleBuilder->DefineDocument( "RTAsm.il", SymDocumentType::Text, SymLanguageType::ILAssembly, SymLanguageVendor::Microsoft );
Console::WriteLine( "The object representing the defined document is: {0}", myDocument );
}
};
int main()
{
CodeGenerator^ myGenerator = gcnew CodeGenerator;
}
import System.*;
import System.Reflection.*;
import System.Reflection.Emit.*;
import System.Resources.*;
import System.Diagnostics.SymbolStore.*;
public class CodeGenerator
{
private ModuleBuilder myModuleBuilder;
private AssemblyBuilder myAssemblyBuilder;
public CodeGenerator()
{
// Get the current application domain for the current thread.
AppDomain currentDomain = AppDomain.get_CurrentDomain();
AssemblyName myAssemblyName = new AssemblyName();
myAssemblyName.set_Name("TempAssembly");
// Define a dynamic assembly in the current domain.
myAssemblyBuilder = currentDomain.DefineDynamicAssembly(myAssemblyName,
AssemblyBuilderAccess.RunAndSave);
// Define a dynamic module in "TempAssembly" assembly.
myModuleBuilder = myAssemblyBuilder.DefineDynamicModule("TempModule",
"Resource.mod", true);
// Define a document for source.on 'TempModule' module.
ISymbolDocumentWriter myDocument = myModuleBuilder.DefineDocument(
"RTAsm.il", SymDocumentType.Text, SymLanguageType.ILAssembly,
SymLanguageVendor.Microsoft);
Console.WriteLine("The object representing the defined document is:"
+ myDocument);
} //CodeGenerator
} //CodeGenerator
public class CallerClass
{
public static void main(String[] args)
{
CodeGenerator myGenerator = new CodeGenerator();
} //main
} //CallerClass
Plattformen
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
ModuleBuilder-Klasse
ModuleBuilder-Member
System.Reflection.Emit-Namespace