【问题标题】:C# MEF dependency injection: the classes in the module cannot be loadedC# MEF依赖注入:模块中的类无法加载
【发布时间】:2016-08-08 19:54:00
【问题描述】:

我想用MEF来实现依赖注入。但是,当尝试加载所有不同的 .dll 文件时,它总是会遇到 System.Reflection.ReflectionTypeLoadException:无法加载模块中的类。尝试加载“Microsoft.AspNet.Identity.Owin.dll”时会出现这种情况。

我正在尝试在 mac 上执行此操作,使用 mono 编译器和目标框架设置为:.NET Framework 4.5.2

    #region Constructor
    public ModuleConfigurationCatalog()
    {
        var assemblyUri = new Uri(Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath));
        var assemblyDir = assemblyUri.LocalPath;

        var allFiles = Directory.EnumerateFiles(assemblyDir, "*.*", SearchOption.AllDirectories);
        var assemblies = allFiles.Where(f => f.EndsWith(".dll", StringComparison.OrdinalIgnoreCase) || f.EndsWith(".exe", StringComparison.OrdinalIgnoreCase)).Distinct();

        _catalog = new AggregateCatalog();

        foreach (var assembly in assemblies)
        {
            var assemblyCatalog = new AssemblyCatalog(assembly);

            if (assemblyCatalog.Parts.ToList().Count > 0)
            {
                _catalog.Catalogs.Add(assemblyCatalog);
            }
        }
    }
    #endregion

breakpoint information

Stacktrace

【问题讨论】:

  • 您可能缺少Microsoft.AspNet.Identity.Owin.dll 程序集的依赖项。确保它的所有依赖项都存在于同一个文件夹中。 (或者如果 GAC 存在,也可以从 GAC 加载它……不过,不确定如何使用 MEF。)
  • @wablab 谢谢,我将所有依赖项添加到引用中并解决了问题。
  • 我会将其添加为答案,以便您接受它以结束问题。谢谢!

标签: c# xamarin mono


【解决方案1】:

您可能缺少Microsoft.AspNet.Identity.Owin.dll 程序集的依赖项。确保它的所有依赖项都存在于同一个文件夹中。 (或者如果 GAC 存在,也可以从 GAC 加载它......不过,不确定如何使用 MEF 来实现。)

【讨论】:

    猜你喜欢
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 2011-06-02
    • 1970-01-01
    • 2011-09-22
    • 2010-09-22
    相关资源
    最近更新 更多