我需要在我正在编写的调试器可视化工具的调用之间保持一个对象,但它不需要在IDE会话之间保持不变。 IDE的EnvDTE.Globals对象似乎是存储此对象的明显位置。
如果已存储的对象类型已在IDE中加载,例如一个整数列表,我可以在globals对象中成功保存这种类型的变量,然后在调试器可视化器的后续调用中检索它。
但是,如果要保存的变量的类型在包含调试器可视化工具本身的程序集中声明,或者在可视化工具引用的本地程序集中声明,那么这一切都非常错误。我可以将对象保存到全局变量中,并在对可视化工具的同一调用中检索它。但是,当我尝试在后续调用中访问它时,我可以成功测试存在的值,但是当我尝试访问它时,IDE就会崩溃。
我认为发生的事情是调试器可视化器的程序集在每次使用可视化器时都会重新加载,因此存储对象的类型与我期望的类型不匹配。嗯,这是我的猜测。任何解释/解决方法将不胜感激。
答案 0 :(得分:0)
您是否尝试序列化/反序列化对象并存储序列化结果而不是对象?
答案 1 :(得分:0)
我想维护一个WCF回调对象,并让远程客户端能够回调,即使调试器扩展未处于活动状态。因此,存储对象的序列化版本对此特定实例没有帮助。