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

问题描述 投票:0回答:1

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

我想提供一个新的 MEF 导出组件,充当其他 MEF 包可以使用的 Visual Studio 服务

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

.net assemblies stub extensibility
1个回答
1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.