11

对于模块化,我在运行时而不是编译时链接到我的解决方案中的 dll,以允许我独立更新它。当我在库项目中放置断点时,当类链接到并创建类型时不会触发这些断点。

作为参考,这是反射代码:

Assembly a = Assembly.LoadFile(FULL_APPLICATION_CACHE + targetVersion + "\\Core.dll");
Type engineCoreType = a.GetType("Core.EngineCore");
object instance = Activator.CreateInstance(engineCoreType);

Visual Studio 是否可以在这种情况下提供其正常的调试工具?我将如何配置它?

4

2 回答 2

12

调试器需要能够找到程序集的 .pdb 文件。您可以从 Debugger + Windows + Modules 窗口对此进行诊断。右键单击 DLL 并选择符号加载信息,它会显示调试器查找 PDB 的位置。

请注意,您永远不应该在这种情况下使用 Assembly.LoadFile(),它会在没有加载上下文的情况下加载程序集。一个昂贵的词,意味着 CLR 不注意 DLL 的来源,并允许您多次加载 DLL。本身就解释了为什么调试器找不到 PDB。始终使用 LoadFrom() 代替。

于 2013-08-12T12:49:59.910 回答
8

您需要确保 .pdb 文件与您正在加载的 dll 位于同一位置。Visual Studio 然后将加载该数据并允许它在断点处停止。

于 2013-08-12T12:39:02.840 回答