c# – 在运行时加载的程序集中没有用于Generic.List的调试可视化工具

c# – 在运行时加载的程序集中没有用于Generic.List的调试可视化工具,第1张

概述我能够为加载了’Assembly.LoadFile’的.NET dll放置断点和检查变量,但是,由于某种原因,Generic List的可视化器没有显示任何元素(如下所示).当我将鼠标悬停在变量上时,在监视窗口中显示相同的内容. 我已经检查了这些不同的解决方案,但似乎没有一个工作(它们似乎主要处理甚至无法调试dll): Debug dynamically loaded assembly Debug 我能够为加载了’Assembly.Loadfile’的.NET dll放置断点和检查变量,但是,由于某种原因,Generic List的可视化器没有显示任何元素(如下所示).当我将鼠标悬停在变量上时,在监视窗口中显示相同的内容.

我已经检查了这些不同的解决方案,但似乎没有一个工作(它们似乎主要处理甚至无法调试dll):

Debug dynamically loaded assembly

Debug dynamically loaded assembly in Visual Studio .NET

我把pdb与dll并排(从它加载的确切位置).我还把那个dll的pdb文件放在正在进行加载的可执行文件旁边,但仍然没有骰子.我在DeBUG中编译,并已将所有配置设置为x86.有一点需要注意,如果我实际上将dll添加为Reference,则调试可视化工具会完美显示(但是,这是一个插件架构,并且exe不应该依赖于dll).

有任何想法吗?

[编辑]

事实证明,我不能只是添加插件作为参考,我必须在我的exe中实际实例化该类型的List才能正确显示,不确定发生了什么…

[编辑]

我做了这个展示行为的示例项目.我使用类似的代码来加载插件(虽然有趣的是,直接调用Assembly.Loadfile并通过反射调用方法似乎不会导致这种行为.我在这里压缩了示例项目:(其他人是否得到了相同的结果?)

http://dl.dropbox.com/u/64502227/PluginLoader.zip

[编辑]

又有趣的发展!我在exe旁边有一个Plugins文件夹,所有dll都在这里.目前,我正在将插件dll / pdb复制到exe目录和Plugins子目录中.如果我使用Assembly.Loadfile并在Plugins目录中使用dll,我将丢失我自己类型的List可视化工具.如果我在exe旁边加载dll,它可以工作,但为什么呢?

我所看到的:

解决方法 解决方案A:

>从exe目录加载所有dll,而不是自己的目录.

解决方案B:

使用它来创建插件:

Plugin plugin = (Plugin)Activator.CreateInstance(assembly.Fullname,"SamplePlugin.MyPlugin").Unwrap();

而不是这个:

Plugin plugin = (Plugin)Activator.CreateInstance(assembly.GetType("SamplePlugin.MyPlugin"));

我想第二行代码实际上只是在内部被第一行代码调用(例如,第一行必须按名称查找程序集,然后从中找到类型“SamplePlugin.MyPlugin”,然后展开()它返回它),但显然不是.

不幸的是,这是解决问题的方法,但它没有回答为什么会发生这种情况.如果有人知道,我仍然会非常感谢这些信息.

总结

以上是内存溢出为你收集整理的c# – 在运行时加载的程序集中没有用于Generic.List的调试可视化工具全部内容,希望文章能够帮你解决c# – 在运行时加载的程序集中没有用于Generic.List的调试可视化工具所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1228917.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存