我能够把断点并检查了载有“Assembly.LoadFile”一个.NET的DLL的变量,但是,出于某种原因对泛型列表可视化不无调试可视化工具Generic.List显示任何元素(如下所示)。在监视窗口中显示的内容与悬停在变量上时相同。在运行时加载的程序集
我已经研究过这些不同的解决方案,但没有一个似乎工作(这也似乎他们大多是应付甚至不能够调试DLL):
Debug dynamically loaded assembly
Debug dynamically loaded assembly in Visual Studio .NET
我把与dll并列的pdb(从它加载的确切位置)。我也将该dll的pdb文件放在正在执行加载的可执行文件旁边,并且仍然没有骰子。我在Debug中进行编译,并将所有配置都设置为x86。有一点需要注意,如果我真的把添加DLL作为一个参考,调试可视化完全显示出来(不过,这是一个插件架构,以及Exe不应该有在DLL中的依赖)。
任何想法?
[编辑]
事实证明,我不能只是添加插件作为一个参考,我已经实际实例化类型在我的exe文件的列表之前可以正常显示了,不知道这是怎么回事...
[编辑]
我做表现出的行为此示例项目。我使用类似的代码来加载插件(尽管有趣的是,直接调用Assembly.LoadFile并通过反射调用一个方法似乎不会导致行为。我在这里压缩了示例项目:(其他人是否获得了同样的结果?)
http://dl.dropbox.com/u/64502227/PluginLoader.zip
[编辑]
另一个有趣的发展!我旁边的EXE,这里所有的DLL去了。目前,我复制插件DLL中的Plugins文件夹/ PDB到两个exe文件目录,和插件子目录。如果我使用Assembly.LoadFile并在Plugins目录使用DLL,我失去了列表可视化我自己类型。如果我在exe旁边加载dll,它会起作用,但是为什么?
我看到:
你能告诉我们你加载DLL和PDB代码? – Polity 2012-04-28 05:35:30
@Polity我加入一个示例项目的链接显示出相同的行为:http://dl.dropbox.com/u/64502227/PluginLoader.zip – Trevor 2012-04-28 20:56:50
的又一突破,如果我通过插件目录中加载和使用激活.CreateInstance并传入Type中,则失败。但是,如果我使用该行:Activator.CreateInstance(assembly.FullName,“SamplePlugin.MyPlugin”)。Unwrap(),它的工作原理。我认为关键是'Unwrap',但我不确定这是为调试器做了什么。另外,我更新了PluginLoader示例(更加简洁并清楚地概述了错误)。 – Trevor 2012-04-28 21:34:56