我能够放置断点并检查加载了“Assembly.LoadFile”的 .NET dll 的变量,但是,出于某种原因,通用列表的可视化工具没有显示任何元素(如下所示)。当我将鼠标悬停在变量上时,监视窗口中显示的内容相同。
我已经检查了这些不同的解决方案,但似乎都没有工作(似乎他们主要处理甚至无法调试 dll):
在 Visual Studio .NET 中调试动态加载的程序集
我将 pdb 与 dll 并排放置(从它加载的确切位置)。我还将那个 dll 的 pdb 文件放在正在加载的可执行文件旁边,但仍然没有骰子。我正在调试中编译,并将所有配置设置为 x86。需要注意的一点是,如果我实际上将添加 dll 作为参考,调试可视化器会完美显示(但是,这是一个插件架构,exe 不应该依赖于 dll)。
有任何想法吗?
[编辑]
事实证明,我不能只是将插件添加为参考,我必须在我的 exe 中实际实例化该类型的列表,然后才能正确显示,不确定发生了什么......
[编辑]
我制作了这个展示行为的示例项目。我使用了与加载插件类似的代码(尽管很有趣,只是直接调用 Assembly.LoadFile 并通过反射调用方法似乎不会导致这种行为。我在这里压缩了示例项目:(其他人得到结果一样?)
http://dl.dropbox.com/u/64502227/PluginLoader.zip
[编辑]
另一个有趣的发展!我在 exe 旁边有一个 Plugins 文件夹,所有的 dll 都在其中。目前,我将插件 dll/pdb 复制到 exe 目录和 Plugins 子目录中。如果我使用 Assembly.LoadFile 并使用 Plugins 目录中的 dll,我将丢失我自己类型的列表可视化工具。如果我在 exe 旁边加载 dll,它可以工作,但为什么呢?
我所看到的: