首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在VS扩展中具有[Export]的MEF组件-没有发现与约束匹配的导出

在VS扩展中具有[Export]的MEF组件-没有发现与约束匹配的导出
EN

Stack Overflow用户
提问于 2017-01-29 16:59:56
回答 1查看 1.6K关注 0票数 4

在Visual扩展中,我试图导出MEF组件并在以后找到它。

我有一节课:

代码语言:javascript
复制
[Export(typeof(IBoilerplateSettings))]
public class BoilerplateSettings : IBoilerplateSettings
{
    ...

这段代码可以在OleMenuCommand的回调中解析。从此拉请求得到了一个例子。

代码语言:javascript
复制
var componentModel = (IComponentModel)this.package.GetService(typeof(SComponentModel));
var settings = componentModel.DefaultExportProvider.GetExportedValue<IBoilerplateSettings>();

但是每次它都会抛出这个错误:

代码语言:javascript
复制
No exports were found that match the constraint: 
    ContractName    UnitTestBoilerplate.IBoilerplateSettings
    RequiredTypeIdentity    UnitTestBoilerplate.IBoilerplateSettings

两者都在同一个程序集中。我在System.CompositionSystem.ComponentModel.Composition中都尝试过System.Composition属性,但两者都不起作用。

我正在查看用于VS的MEF的文档,但似乎添加该属性就可以了。我也尝试过清除ComponentModel缓存,但这是行不通的。我在这里错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-30 00:35:40

通常有两件事需要检查:

  1. 确保您的项目是.vsixmanifest中的MEF组件。如果不是的话,VS就不会在你的集会上看了。
  2. 如果使用Visual 2015或更高版本,则在ComponentModelCache文件夹中有一个.err文件,该文件在创建MEF组合时列出错误。确保你关心的东西不在里面。(在there...we中使用垃圾并不总是最好的运输方式,这是很正常的。)

如果这样做不起作用,通常会有一种激进的方法,即在Visual运行时只对所有异常进行中断,并查看是否可以找到与扩展相关的任何内容。您可能会发现一些其他加载异常,或其他一些根本原因。不幸的是,这是一种非常分散的方法。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41923503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档