0

我需要在调用我正在编写的调试器可视化器之间保留一个对象,但它不需要在 IDE 会话之间保留。IDE 的 EnvDTE.Globals 对象似乎是存储该对象的明显位置。

如果正在存储的对象的类型已经加载到 IDE 中,例如整数列表,我可以成功地将这种类型的变量保存在 globals 对象中,然后在随后调用调试器可视化器时检索它。

但是,如果要保存的变量的类型是在包含调试器可视化器本身的程序集中声明的,或者在可视化器引用的本地程序集中声明,那么一切都会出错。我可以将对象保存到全局变量中,并在对可视化器的同一调用中检索它。但是,当我尝试在后续调用中访问它时,我可以成功测试该值是否存在,但是当我尝试访问它时,IDE 会崩溃。

我认为正在发生的事情是调试器可视化器的程序集在每次使用可视化器时重新加载,因此存储对象的类型与我期望的类型不匹配。嗯,这是我的猜测。任何解释/解决方法将不胜感激。

4

2 回答 2

1

您是否尝试过序列化/反序列化对象并存储序列化结果而不是对象?

于 2009-10-15T17:48:05.827 回答
0

我想维护一个 WCF 回调对象,并让远程客户端即使在调试器扩展未处于活动状态时也能够回调。因此,存储对象的序列化版本在此特定情况下无济于事。

于 2009-10-15T20:17:23.810 回答