【发布时间】:2010-12-14 17:36:12
【问题描述】:
我有一个正在工作的项目,它将在所有加载的程序集中搜索任何实现某个接口的类。然后它将创建该类的实例并调用接口的方法。该代码在测试环境中的简单项目上运行良好。它的核心是以下功能:
public static List<Type> GetLoadedTypes(Type targetType)
{
var types = AppDomain.CurrentDomain.GetAssemblies().ToList()
.SelectMany(a => a.GetTypes())
.Where(t => targetType.IsAssignableFrom(t)).ToList();
return types;
}
我有另一个项目将此代码插入其中,但 LINQ 查询失败,因为找不到域中的一个程序集。
System.IO.FileNotFoundException:无法加载文件或程序集“Microsoft.Practices.ObjectBuilder,版本=1.0.51206.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。系统找不到指定的文件。
我没有在我的任何项目中直接引用这个程序集。如何找出引用它的程序集?如果找不到,程序集是如何进入域的?
编辑: 我在项目中使用企业库,但我已经在引用 Microsoft.Practices.ObjectBuilder2.dll。显然这两个组件之间存在差异。对吗?
谢谢! 杰夫
【问题讨论】: