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