动态生成程序集的调试信息

问题描述 投票:0回答:1

是否可以在

AssemblyBuilder
中使用
TypeBuilder
/
MethodBuilder
/
System.Reflection.Emit
为动态生成的程序集添加局部变量名和源代码信息等调试信息?我特别感兴趣的是,这在 .NET 的非 .NET Framework 版本(例如,.NET Core 5、6、7)中是否可行。

c# .net compiler-construction
1个回答
0
投票

ISymbolDocumentWriter (ModuleBuilder.DefineDocument), ISymbolWriter (ModuleBuilder.GetSymWriter), LocalBuilder.SetLocalSymInfo 但它们只在 Net Framework 上实现(参见 issue1, issue2)。无论如何,我建议在 Reflection.Emit 周围使用一些包装器,而不是直接使用它,NuGet/GitHub 上有很多。

或者:

  1. 您可以使用 Mono.Cecil 作为 IL 编写器(PDB 编写器仍然仅限 Windows,但至少您可以针对 Core)。
  2. Roslyn API,但它完全不是轻量级的。
© www.soinside.com 2019 - 2024. All rights reserved.