Здравствуйте!
Есть DLL, в ней один класс.
Делаю так:
Assembly asm = Assembly.LoadFile(fileName);
foreach (Type type in asm.GetTypes())
......
Все работает.
Добавляю в эту DLL UserControl, после чего на строке
foreach (Type type in asm.GetTypes())
вываливает исключение:
Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
Как это понимать? И можно ли как то в этой библиотеке сохранить UserControl?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте! А>Есть DLL, в ней один класс. А>Делаю так: А> Assembly asm = Assembly.LoadFile(fileName); А> foreach (Type type in asm.GetTypes()) А>......
А>Все работает. А>Добавляю в эту DLL UserControl, после чего на строке А> foreach (Type type in asm.GetTypes()) А>вываливает исключение: А>Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
А>Как это понимать? И можно ли как то в этой библиотеке сохранить UserControl?
Retrieve the LoaderExceptions property for more information.
Также проверьте, чтобы и у приложения, и у DLL стояла в референсах System.Windows.Forms.dll
Re[2]: Динамическая загрузка DLL
От:
Аноним
Дата:
08.04.10 10:46
Оценка:
Здравствуйте, Мишень-сан, Вы писали:
МС>Retrieve the LoaderExceptions property for more information.
А что тут надо сделать ?
МС>Также проверьте, чтобы и у приложения, и у DLL стояла в референсах System.Windows.Forms.dll
Стоит
Re[3]: Динамическая загрузка DLL
От:
Аноним
Дата:
08.04.10 10:59
Оценка:
Как выяснилось, исключение вызывается только тогда, ктогда простой класс имеет пропертю:
Здравствуйте, Аноним, Вы писали:
А>Как выяснилось, исключение вызывается только тогда, ктогда простой класс имеет пропертю:
А>private UserControl1 uc1;
А>public UserControl А>{ А> return this.uc1; А>}
И как Вы пофиксили эту проблему? А просто налетел на нее в VS 2010 при компиляции Workflow проекта под .NET 4.0
Здравствуйте, <Аноним>, Вы писали:
А>Здравствуйте, Мишень-сан, Вы писали:
МС>>Retrieve the LoaderExceptions property for more information. А>А что тут надо сделать ?
Нужно словить Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
Далее в дебаггере развернуть свойства этого исключения и посмотреть то, что находится в свойстве LoaderExceptions. Думаю, все вопросы решатся.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте! А>Есть DLL, в ней один класс. А>Делаю так: А> Assembly asm = Assembly.LoadFile(fileName); А> foreach (Type type in asm.GetTypes()) А>......
А>Все работает. А>Добавляю в эту DLL UserControl, после чего на строке А> foreach (Type type in asm.GetTypes()) А>вываливает исключение: А>Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
А>Как это понимать? И можно ли как то в этой библиотеке сохранить UserControl?
Если цель — достать свой класс, то можно просто отловить ReflectionTypeLoadException и взять у него Types там будет массив с null вместо тех типов, которые загрузить не получилось.
Что-то вроде
Причина ReflectionTypeLoadException, как правило, в том, что анализируемая сборка референсит, другую, которой нет и один из типов использует классы этой другой сборки.