c# - 从存储在不同文件夹中的程序集中映射类

标签 c# nhibernate mef fluent

我正在尝试使用 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/

相关文章:

asp.net-mvc-3 - MEF 和 MVC 3 - 如何从 mef 容器动态加载嵌入 View ?

c# - 将音频转换为文本

sql - HQL/JPQL - FROM 上的嵌套选择

c# - NHibernate.MappingException : No persister for: NHibernateExperiment. Player - 我找不到解决方案

c# - 如何使用 asp.net mvc3 和 nhibernate 提高 Web 应用程序性能

c# - 构建时将库项目复制到子文件夹而不是根目录

c# - 无论如何,有没有办法检测方法将调用什么?

c# - 找不到组件成员的 getter

c# - 具有不相关的额外参数和 DTO 以在域层中实现存储库

c# - 在 WPF 中处理来自 Winforms 组件的未处理异常