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 组件,这样如果您引用存根,它将在运行时与提供的实现无缝协作?

4

1 回答 1

1

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

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

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

于 2009-12-02T18:06:11.643 回答