从VSPackage类

时间:2017-03-13 16:07:06

标签: visual-studio mef vspackage

我需要能够从我的包类中与我的MEF组件进行通信。我尝试了几种不同的方法:

使用了包类中的[import]属性。但是,属性始终为null。我发现这是因为您无法从包类中导入MEF组件。

尝试调用" componentModel.DefaultExportProvider.GetExportedValue"获取MEF创建的类的实例。这实际上确实返回了一个实例,但它似乎是一个副本,或者没有链接到实际MEF组件的东西

我尝试访问的MEF组件是我创建的自定义团队资源管理器页面部分。我的包有一个事件,当被触发时,需要通过方法调用调用这个MEF组件,并提供有关我的应用程序状态的一些信息。

这似乎应该是直截了当的,但我已经被困了好几天了。

我只需要与包中的MEF组件进行通信。我可以这样做吗?这是可能吗?

1 个答案:

答案 0 :(得分:2)

我找到了答案。对于任何感兴趣的人,请参阅SLaks'发布示例解决方案:Rebracer

基本思想是Package类不能直接创建任何东西,甚至不能创建OLEMenuCommands。所有这些都需要由Visual Studio通过使用MEF隐式实例化。

How to register my service as a global service or how can I use MEF in my scenario?