我对 MEF 有点困惑。
我有一个安装程序和配置应用程序外壳,它使用 MEF 加载各个安装程序组件。这使最终用户能够从已放入安装可分发的任何组件中进行选择。
为使用此版本而编写的第一个安装组件使用了 SQLServer SMO 库的 11 版。针对 2008R2 或 2012 安装都可以正常工作。(让我们称之为组件A)
我有另一个团队将代码迁移到新组件,但该代码使用 SQLServer SMO、RMO 和 SSIS (DTS) 库的版本 10。(让我们称之为组件B)
当 MEF 去加载组件 BI 时,获取 SQLServer DLL (Microsoft.SqlServer.Replication) 之一的 LoaderExceptionFailure。它实际上给出了 FileNotFoundException(列出 DLL)。DLL 存在于组件的目录中。这是正确的版本 10。
shell 应用程序中已经有版本 11 的文件。
有没有办法告诉应用程序上下文该做什么?有没有办法告诉组件加载它需要的任何特定库?
我想假设每个组件都可以指定“Associated.Library,Version=1.0.0.0,publickey=abcdef123456789,culture=none”。