【发布时间】:2012-01-30 23:04:36
【问题描述】:
我已经能够使用CreateToolWindow2 以编程方式从 F# Interactive 创建一个 VS2010 插件工具窗口,它本身就是一个工具窗口。我传递给CreateToolWindow2 的Assembly 和Class 参数对应于构成工具窗口的Panel (WinForms)。通过ControlObject out ref 参数“返回”对已创建面板的引用。
用ComVisible(true) 属性标记了我的面板程序集后,我确实得到了返回的实例,除非我尝试访问实例的任何成员(从F# Interactive 的上下文中)我得到RemotingException:“这远程代理没有通道接收器,这意味着服务器没有注册的服务器通道正在侦听,或者此应用程序没有合适的客户端通道与服务器通信。"
有什么办法可以绕过这个障碍吗?
【问题讨论】:
-
this 有帮助吗?
-
@Daniel - 谢谢,我已经看到了,它看起来很相关,但没有看到答案对我有什么帮助(我几乎没有使用过 Remoting API)。我的部分麻烦可能是我的面板控件,已经从
Panel继承,不能也从MarshalByRefObject继承。此外,CreateToolWindow2实际上创建了我的面板实例并将其交还给我......不确定我缺乏对象所有权是否会使事情变得困难(参考“......在两端创建通道。”) . -
@Daniel - 实际上,
Panel最终确实继承自MarshalByRefObject,所以我想我有一些事情要做......
标签: c# f# remoting envdte f#-interactive