我在 MEF 的组合容器和目录目录中遇到了一个奇怪的问题,我将完整路径传递给包含程序集的文件夹:
在 C:\Program Files\MyCompany\MyApp\Bin
程序集A:ExportedTypeA、ExportedTypeB
组装 B:BaseExportedTypeA、BaseExportedTypeB
从另一个位置执行 (C:\users\Me\dev\project\foo\bar\bar2\bin\debug\OtherApp.Exe)
在我调用的应用程序中:
string ProviderPhysicalPath = @"C:\Program Files\MyCompany\MyApp\Bin";
using (DirectoryCatalog catalog = new DirectoryCatalog(ProviderPhysicalPath))
using (CompositionContainer container = new CompositionContainer(catalog))
{
container.ComposeParts(this);
}
在container.ComposeParts(this)
我得到以下异常:
合成产生了一个单一的合成错误。下面提供了根本原因。查看 CompositionException.Errors 属性以获取更多详细信息。
1) 找不到路径“C:\USERS\Me\dev\project\foo\bar\bar2\BIN\DEBUG\BIN\”的一部分。
令人困惑的是两个部分:
- 为什么它在我没有指定的目录中查找?
- 为什么要将 \bin\ 附加到执行目录来执行此操作?
有什么我做错了吗?