У меня есть проект, над которым я работаю, который будет искать во всех загруженных сборках любой класс, реализующий определенный интерфейс.Затем он создаст экземпляр этого класса и вызовет метод интерфейса.Код отлично работал на простых проектах в средах тестирования.В основе этого лежит следующая функция:
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, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a' или одна из ее зависимостейСистема не может найти указанный файл.
Я не ссылаюсь на эту сборку напрямую ни в одном из моих проектов.Как я могу узнать, какая сборка ссылается на него?Как сборка даже попала в домен, если она не может быть найдена?
РЕДАКТИРОВАТЬ: Я использую Enterprise Library в проекте, но я уже ссылаюсь на Microsoft.Practices.ObjectBuilder2.dll,Видимо, есть разница между двумя сборками.Это правильно?
Спасибо!Джефф