如何为MEF组件提供API存根?

时间:2009-11-23 16:08:14

标签: .net api assemblies extensibility stub

Visual Studio 2010 SDK附带了许多程序集,如Microsoft.VisualStudio.Text.Data和Microsoft.VisualStudio.Text.UI,它们只是存根。要为Visual Studio编写扩展,请引用这些程序集,但将引用的“复制本地”和“精确版本”属性设置为false。在Visual Studio中加载扩展时,引用将绑定到Visual Studio以前加载的这些程序集的内部实现。

我想提供一个新的MEF导出组件,它充当Visual Studio服务,其他MEF包可以[Import]。要使用该服务,其他组件将需要引用我的包 - 但我更喜欢它们引用存根,以便我可以更改我的服务的内部实现,而不会破坏引用它的其他包。如何提供包含来自某个任意程序集的公开可见API组件的“存根”程序集,这样如果引用存根,它将在运行时无缝地与提供的实现一起使用?

1 个答案:

答案 0 :(得分:1)

我通过创建两个程序集解决了这个问题:

  • MyCompany.VisualStudio.Feature :接口和某些情况下的抽象类,以简化最常见的实现。这里没有[Export]
  • MyCompany.VisualStudio.Feature.Implementation :实现与该功能相关的服务。在这里,您将看到[Export] s。

使用我的功能的人只引用前者,并将Copy Local和Exact Version设置为false。