【发布时间】:2017-01-29 16:59:56
【问题描述】:
在 Visual Studio 扩展中,我尝试导出 MEF 组件并稍后找到它。
我有这门课:
[Export(typeof(IBoilerplateSettings))]
public class BoilerplateSettings : IBoilerplateSettings
{
...
并且此代码在来自 OleMenuCommand 的回调中解析。从this pull request 获取示例。
var componentModel = (IComponentModel)this.package.GetService(typeof(SComponentModel));
var settings = componentModel.DefaultExportProvider.GetExportedValue<IBoilerplateSettings>();
但是每次都会抛出这个错误:
No exports were found that match the constraint:
ContractName UnitTestBoilerplate.IBoilerplateSettings
RequiredTypeIdentity UnitTestBoilerplate.IBoilerplateSettings
两者都在同一个程序集中。我已经在System.Composition 和System.ComponentModel.Composition 中尝试了[Export] 属性,但都不起作用。
我正在查看the docs for MEF in VS,但听起来添加属性应该可以工作。我也尝试过清除 ComponentModel 缓存,但没有奏效。我在这里错过了什么?
【问题讨论】:
标签: c# visual-studio mef visual-studio-extensions