3
votes

In C#, while loading DLL from folder using the below code getting these below stack trace, when tried to get the types.

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

Stack trace:

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()

I also have checked existing solutions: Error message 'Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.', Loading DLLs at runtime in C# (didn't work)

2

2 Answers

4
votes

Solution to the problem was quite easy. It is just using a different method from the assembly. Instead of using LoadFile, we should use LoadFrom

So the below code solves the problem efficiently

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

There is no need to use GetExportedTypes. We can get all the types.

3
votes

Assembly.LoadFile only loads the contents of an assembly , But Assembly.LoadFrom loads an assembly file perfectly (and dependencies If there are).