我正在尝试使用 MEF 和流畅的 Nhibernate 作为 ORM 来构建可扩展的应用程序。 在我决定将扩展程序集存储在一个单独的文件夹中之前,它运行良好 (\扩展名)。 MEF 加载扩展没有任何问题,但是 nhibernate 抛出异常,因为它找不到程序集。
有没有办法将扩展文件夹添加到程序集搜索路径?
MEF 组成:
[ImportMany]
public IEnumerable<IModule> Modules { get; private set; }
public void LoadModules()
{
_initialized = false;
var catalog = new DirectoryCatalog("Extensions");
var container = new CompositionContainer(catalog);
container.ComposeParts(this);
}
映射:
foreach (var module in modules)
{
var assembly = module.GetType().Assembly;
config.Mappings(m => m.FluentMappings.AddFromAssembly(assembly));
}
最佳答案
如果我没有正确理解你的问题,有几个选项:
AppDomain.CurrentDomain.SetupInformation.PrivateBinPath
将在您的扩展目录位于或位于应用程序目录的子目录中时起作用。
或者,您可以处理 AppDomain.AssemblyResolve
事件。
关于c# - 从存储在不同文件夹中的程序集中映射类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6229221/