Когда для целевого фреймворка моего проекта установлено значение Framework 4.0 и выполняется следующий код:
Assembly pAsm = Assembly.LoadFrom(aMagPath);
foreach (Module m in pAsm.GetModules())
{
Type t = m.GetType("typeName"));
}
typeName является определяемым пользователем типом из сторонней библиотеки dll.
t равно нулю.
Если я изменю тип цели на Framework 3.5 t, он не будет нулевым.
Я больше ничего не меняю. Я просто изменяю целевой фреймворк и перезапускаю приложение.
Может кто-нибудь объяснить, почему это происходит?
Есть ли какой-нибудь инструмент, который позволит мне больше в этом разобраться?
UPDATE:
Я изменил свой код на следующий.
Assembly pAsm = Assembly.LoadFrom(aMagPath);
Type t = pAsm.GetType(String.Format("GM.FCAT.{0}.{0}+FBlock+{1}Function+{2}CaseStream+{2}RepeatableParameterStream", FBlockName, pName, aParam.Name), false);
У меня все та же проблема.
t = null в версии 4.0 и не в версии 3.5
Не удается найти тип при загрузке в отражатель .net. так что, думаю, его там нет.