MEF和版本兼容性

时间:2018-09-17 08:41:09

标签: c# windows mef

我对MEF和版本兼容性有疑问

步骤:

我创建了三个项目:

  • 接口项目(具有一个接口 A ,使我必须有一个void方法)
  • 导出项目(实现接口 A 并实现将“ Hello world”写入控制台的功能)
  • 导入项目(导入接口 A

那我该怎么办

  • 编译我的 Export项目,并将export.dll放到我将在Import项目中使用的文件夹中
  • 将我的界面(InterfaceProject.dll)安装到GAC。 (版本1.1.0.0)(保持版本控制)
  • 运行我的导入项目

    • 如果我不更改接口项目(导入项目使用的)的程序集版本,则一切正常
    • 如果我增加界面项目的程序集版本,则所有程序崩溃,并且我收到一条消息((ContractName =“ MyImportProject.IMyInterface”)'无法分配为'MyImportProject.IMyInterface“)

为什么会发生以及如何处理?

1 个答案:

答案 0 :(得分:0)

对接口程序集进行签名很有用,因为MEF会在第一次(即您的启动应用程序)时仅加载一次。

此外,除非您全部碰碰,否则请勿碰碰版本。