C # - загрузка DLL Dynamic - System.Reflection.ReflectionTypeLoadException: невозможно загрузить один или несколько запрошенных типов - PullRequest
1 голос
/ 24 апреля 2019

В C #, при загрузке DLL из папки с использованием приведенного ниже кода, получая эти данные ниже трассировки стека, при попытке получить типы.

var assembly = Assembly.LoadFile(assemblyInfo.FullName); // assembly loads perfectly using the absolute path.
var types = assembly.GetTypes(); // this line throws the below stacktrace.

Трассировка стека:

System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
   at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
   at System.Reflection.Assembly.GetTypes()

Я также проверил существующие решения: Сообщение об ошибке 'Невозможно загрузить один или несколько запрошенных типов. Получите свойство LoaderExceptions для получения дополнительной информации. ', Загрузка DLL во время выполнения в C # (не работает)

Ответы [ 2 ]

1 голос
/ 24 апреля 2019

Assembly.LoadFile загружает только contents of an assembly, но Assembly.LoadFrom отлично загружает assembly file (и зависимости, если таковые имеются).

1 голос
/ 24 апреля 2019

Решение проблемы было довольно простым.Это просто использование метода, отличного от сборки.Вместо использования LoadFile, мы должны использовать LoadFrom

Так что приведенный ниже код эффективно решает проблему

var assembly = Assembly.LoadFrom(assemblyInfo.FullName); // loads perfectly, absolute path to dll
var types = assembly.GetTypes(); // loads perfectly.

Нет необходимости использовать GetExportedTypes.Мы можем получить все типы.

...