代码之家  ›  专栏  ›  技术社区  ›  Sam Harwell

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

  •  1
  • Sam Harwell  · 技术社区  · 16 年前

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

    我想提供一个新的MEF导出组件,作为其他MEF包可以使用的VisualStudio服务 [Import] . 要使用该服务,其他组件将需要引用我的包-但我更希望它们引用存根,这样我就可以在不破坏引用它的其他包的情况下更改我的服务的内部实现。如何提供一个“存根”程序集,其中包含来自某个任意程序集的公共可见API组件,这样,如果您引用存根,它将在运行时与提供的实现无缝协作?

    1 回复  |  直到 16 年前
        1
  •  1
  •   Sam Harwell    16 年前

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

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

    使用我的功能的人只引用前者,并将“复制本地和精确版本”设置为false。

    推荐文章