我有3个类库,LibA,LibB&的LibC。这些库定义了A,B和B类。 C分别。
class C
{
public IEnumerable<X> FuncInC()
{
return something;
}
}
在LibB中添加了LibC作为参考。 B类使用C类。使用MEF,我从LibB导出了B类。
[Export(typeof(InterfaceForB))]
class B : InterfaceForB
{
public IEnumerable<X> FuncInB()
{
return new C().FuncInC();
}
}
在A类中,我使用B中的导出类,如下所示。
public class A : InterfaceForA
{
[Import(typeof(InterfaceForB))]
private InterfaceForB _b;
private CompositionContainer _container;
public A()
{
var _catalog = new DirectoryCatalog(System.IO.Directory.GetCurrentDirectory());
_container = new CompositionContainer(_catalog);
_b = _container.GetExportedValue<InterfaceForB>();
}
public IEnumerable<X> FuncInA()
{
return _b.FuncInB();
}
}
当我运行FuncInA()
时,它会使用以下详细信息引发FileNotFoundException
:
“无法加载文件或程序集 'LibC,版本= 1.0.0.0, Culture = neutral,PublicKeyToken = null' 或其中一个依赖项。系统 找不到指定的文件。“
注意:
答案 0 :(得分:1)
在解决方案资源管理器中显示的LibB参考中,右键单击LibC,“属性”,将“特定版本”设置为“False”。
或者更好的是,删除二进制引用并将其替换为项目引用(假设LibC与LibB在同一解决方案中)。