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

C# 从存储在不同文件夹中的程序集映射类,c#,nhibernate,mef,fluent,C#,Nhibernate,Mef,Fluent,我正在尝试使用MEF和fluent Nhibernate作为ORM构建一个可扩展的应用程序。 在我决定将扩展程序集存储在一个单独的文件夹中之前,它一直运行良好 (\Extensions)。MEF加载扩展时没有任何问题,但是 nhibernate抛出异常,因为它无法定位程序集 是否有方法将Extensions文件夹添加到程序集搜索路径 MEF组成: [ImportMany] public IEnumerable<IModule> Modules { get; private set;

我正在尝试使用MEF和fluent Nhibernate作为ORM构建一个可扩展的应用程序。 在我决定将扩展程序集存储在一个单独的文件夹中之前,它一直运行良好 (\Extensions)。MEF加载扩展时没有任何问题,但是 nhibernate抛出异常,因为它无法定位程序集

是否有方法将Extensions文件夹添加到程序集搜索路径

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);

}

如果我正确理解您的问题,有两种选择:

AppDomain.CurrentDomain.SetupInformation.PrivateBinPath
如果扩展目录位于或位于应用程序目录的子目录中,则可以使用


或者,您可以处理AppDomain.AssemblyResolve事件。

如果我正确理解了您的问题,有两个选项:

AppDomain.CurrentDomain.SetupInformation.PrivateBinPath
如果扩展目录位于或位于应用程序目录的子目录中,则可以使用


或者,您可以处理AppDomain.AssemblyResolve事件。

谢谢!我使用app.config找到了另一个解决方案
谢谢!我找到了另一个使用app.config的解决方案
foreach (var module in modules)
{
    var assembly = module.GetType().Assembly;
    config.Mappings(m => m.FluentMappings.AddFromAssembly(assembly));
}