无法在MEF插件中加载EntityFrameworkCore依赖项

时间:2019-02-10 19:54:42

标签: c# asp.net-core-mvc mef

我有一个新的.net核心mvc应用程序,使用mef的n层结构将每个层作为插件加载。我遇到的问题是当使用实体框架核心nuget包时,使用mef加载数据访问层。我得到:Could not load file or assembly 'Microsoft.EntityFrameworkCore, Version=2.2.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified,当我打电话给CreateContainer()时。

我手动尝试将依赖项dll添加到输出目录,但仍然无济于事。我还确定了我的mef范围,使其仅加载与我的库命名匹配的dll。仍然要走。

我创建了一个dummy project on github来显示我遇到的错误。实际的代码在Mvc项目的启动过程中炸毁了on line 96

var registrar = new ModuleRegistrar(services);
var conventions = new ConventionBuilder();
conventions
    .ForTypesDerivedFrom<IModule>()
    .Export<IModule>()
    .Shared();

var dir = Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().Location).LocalPath);
var dlls = Directory.GetFiles(dir, "TestMEF*.dll", SearchOption.AllDirectories);
var asms = dlls.Select(AssemblyLoadContext.Default.LoadFromAssemblyPath).ToList();
var cfg = new ContainerConfiguration().WithAssemblies(asms, conventions);

using (var container = cfg.CreateContainer())
    foreach (var module in container.GetExports<IModule>())
        module.Register(registrar);

如果有人对此有最迷惑的想法,将不胜感激。

0 个答案:

没有答案