Ошибка файла не найдена при отражении типов сборки - PullRequest
1 голос
/ 11 октября 2011

Итерация по каталогу для * .dll файлов, поиск их и создание ссылки на сборку для каждого файла.

После того, как у меня есть отраженный объект, я перебираю все типы, доступные в каждом, из которых яХотелось бы получить пользовательские атрибуты для каждого типа в коллекции:

string[] files = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory + "Methods", "*.dll");

foreach (string s in files)
{
    Assembly asm = Assembly.LoadFile(s);

    Type[] asmTypes = asm.GetTypes();

    bool isCorrect = false;

    foreach (Type type in asmTypes)
    {
        1. var customAttribs = type.GetCustomAttributes(typeof(BaseModelAttribute), false);
    }
}

[Обновление]: исключение поднято в строке # 1

Этот код работает вплоть до foreach... цикл, когда я получаю исключение, говорящее, что файл не может быть найден, что странно, поскольку я создал ссылку на сборку из файла выше в блоке кода (не упоминается в коде).

[Обновление]: Эрно был прав, предполагая, что ссылка не может быть установлена.По какой-то причине base необходимо определить вне ссылочного пула (находящегося в каталоге bin), даже если это на самом деле не требуется приложению.Не имеет смысла для меня, но это работает.Благодаря.

1 Ответ

2 голосов
/ 11 октября 2011

Когда .NET не может найти файл, он, вероятно, пытается загрузить сборку, от которой зависит текущая отраженная сборка.

Вы можете использовать Fuslogvw .exe (SDK), чтобы узнать, какая сборка ищется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...