ModuleBuilder.DefineDocument 方法

定义

重载

DefineDocument(String, Guid)

定义源的文档。

DefineDocument(String, Guid, Guid, Guid)

定义源的文档。

DefineDocument(String, Guid)

定义源的文档。

C#
public System.Diagnostics.SymbolStore.ISymbolDocumentWriter DefineDocument(string url, Guid language = default);

参数

url
String

文档的 URL。

language
Guid

标识文档语言的 GUID。 这是可选的。

返回

定义的文档。

例外

url null

此方法在不是持久化模块的动态模块上调用。

适用于

.NET 10 和 .NET 9
产品 版本
.NET 9, 10

DefineDocument(String, Guid, Guid, Guid)

定义源的文档。

C#
public System.Diagnostics.SymbolStore.ISymbolDocumentWriter DefineDocument(string url, Guid language, Guid languageVendor, Guid documentType);

参数

url
String

文档的 URL。

language
Guid

标识文档语言的 GUID。 这可以 Empty

languageVendor
Guid

标识文档语言供应商的 GUID。 这可以 Empty

documentType
Guid

标识文档类型的 GUID。 这可以 Empty

返回

定义的文档。

例外

url null。 这是与早期版本的 .NET Framework 的更改。

此方法在不是调试模块的动态模块上调用。

示例

下面的代码示例演示如何使用 DefineDocument 将外部符号文档(在本例中为原始 IL 文件)附加到动态模块。

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();
      }
   }
}

注解

重要

早期版本的 .NET Framework 会在 nullurl 时引发 ArgumentException 而不是 ArgumentNullException

适用于

.NET 10 和其他版本
产品 版本
.NET 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1