C# 无法从MEF中的其他库调用库
我有3个类库,LibA、LibB和LibC。这些库分别定义了类A、B和CC# 无法从MEF中的其他库调用库,c#,.net-4.0,mef,C#,.net 4.0,Mef,我有3个类库,LibA、LibB和LibC。这些库分别定义了类A、B和C class C { public IEnumerable<X> FuncInC() { return something; } } C类 { 公共IEnumerable functinc() { 归还某物; } } LibC被添加为LibB中的引用。B类使用C类。使用MEF,我从LibB导出了B类 [Export(typeof(InterfaceForB))] c
class C
{
public IEnumerable<X> FuncInC()
{
return something;
}
}
C类
{
公共IEnumerable functinc()
{
归还某物;
}
}
LibC被添加为LibB中的引用。B类使用C类。使用MEF,我从LibB导出了B类
[Export(typeof(InterfaceForB))]
class B : InterfaceForB
{
public IEnumerable<X> FuncInB()
{
return new C().FuncInC();
}
}
[导出(typeof(InterfaceForB))]
B类:接口论坛
{
公共IEnumerable FuncInB()
{
返回新的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();
}
}
公共A类:InterfaceForA
{
[导入(类型(接口论坛))]
专用接口论坛;
私有合成容器_容器;
公共A()
{
var_catalog=newdirectorycalog(System.IO.Directory.GetCurrentDirectory());
_容器=新的合成容器(_目录);
_b=_container.GetExportedValue();
}
公共IEnumerable functina()
{
返回_b.FuncInB();
}
}
当我运行FuncInA()
时,它会引发FileNotFoundException
,并显示以下详细信息:
“无法加载文件或程序集
'LibC,Version=1.0.0.0,
区域性=中性,PublicKeyToken=空'
或者它的一个依赖项。系统
找不到指定的文件。“
注:
在解决方案资源管理器中显示的LibB引用中,右键单击LibC“properties”,将“Specific Version”设置为“False”
或者更好的方法是删除二进制引用并用项目引用替换它(假设LibC与LibB位于同一个解决方案中)。在解决方案资源管理器中显示的LibB引用中,右键单击LibC,“属性”,将“特定版本”设置为“False”
或者更好的方法是删除二进制引用并用项目引用替换它(假设LibC与LibB使用相同的解决方案)。我也有同样的问题。特定版本已设置为false。我有相同的问题。特定版本已设置为false。