ソースの文書を定義します。
Public Function DefineDocument( _
ByVal url As String, _ ByVal language As Guid, _ ByVal languageVendor As Guid, _ ByVal documentType As Guid _) As ISymbolDocumentWriter
[C#]
public ISymbolDocumentWriter DefineDocument(stringurl,Guidlanguage,GuidlanguageVendor,GuiddocumentType);
[C++]
public: ISymbolDocumentWriter* DefineDocument(String* url,Guidlanguage,GuidlanguageVendor,GuiddocumentType);
[JScript]
public function DefineDocument(
url : String,language : Guid,languageVendor : Guid,documentType : Guid) : ISymbolDocumentWriter;
パラメータ
- url
文書の URL。 - language
文書の言語を識別するグローバル一意識別子 (GUID: Globally Unique IDentifier)。null でもかまいません。 - languageVendor
文書の言語の販売元を識別する GUID。null でもかまいません。 - documentType
文書の種類を識別する GUID。null でもかまいません。
戻り値
定義する文書を表す ISymbolDocumentWriter オブジェクト。
例外
例外の種類 | 条件 |
---|---|
ArgumentNullException | url が null 参照 (Visual Basic では Nothing) です。 |
InvalidOperationException | このメソッドは、デバッグ モジュールではない動的モジュールに対して呼び出されます。 |
使用例
[Visual Basic, C#, C++] 次のコード例は、 DefineDocument を使用して、外部のシンボル ドキュメント (この場合は、生の IL ファイル) を動的モジュールに結び付ける方法を示しています。
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
[C#]
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();
}
}
}
[C++]
#using <mscorlib.dll>
using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
using namespace System::Resources;
using namespace System::Diagnostics::SymbolStore;
public __gc 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 = S"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(S"TempModule", S"Resource.mod", true);
// Define a document for source.on 'TempModule' module.
ISymbolDocumentWriter* myDocument =
myModuleBuilder->DefineDocument(S"RTAsm.il", SymDocumentType::Text,
SymLanguageType::ILAssembly, SymLanguageVendor::Microsoft);
Console::WriteLine(S"The object representing the defined document is: {0}", myDocument);
}
};
int main() {
CodeGenerator* myGenerator = new CodeGenerator();
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
参照
ModuleBuilder クラス | ModuleBuilder メンバ | System.Reflection.Emit 名前空間