2011-06-03 15 views
2

私はMEFと流暢なNhibernateをORMとして使用して拡張可能なアプリケーションを構築しようとしています。 拡張アセンブリを別のフォルダに格納することを決定するまではうまくいっていた (\ Extensions)。 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)); 
} 

答えて

0

私が正しくあなたの質問を理解していた場合は、オプションのカップルがあります:

AppDomain.CurrentDomain.SetupInformation.PrivateBinPathはあなたの拡張ディレクトリあれば動作しますまたはアプリケーションのディレクトリのサブディレクトリにあります。

また、AppDomain.AssemblyResolveイベントを処理することもできます。

+0

ありがとうございました! <プロービングprivatePath = "拡張" /> を '私は 'のapp.configを使用して、別の解決策を見つけました – doerig

関連する問題