Type.GetType fails to create type from already loaded assembly

.net, assemblies, c#, reflection

Solution

In order to understand why this doesn't work, you need to understand the issue of "load contexts". Type.GetType only looks at the "Load" context. The assembly you loaded into memory was in the "LoadFrom" context.

The only way to really get binds in the load context to see assemblies in the load-from context is to use the AssemblyResolve event and write code to return the correct assembly. The AssemblyResolve event fires right before the bind fails and all other assembly lookup did not succeed.

See the following links for more information about load contexts and issues that arise when using LoadFrom.

MSDN - http://msdn.microsoft.com/en-us/library/dd153782.aspx AssemblyResolve - http://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve.aspx Suzanne Cook - Link

Problem

I have program which loads an assembly using `Asssembly.LoadFrom` method. Some time later I attempt to use `Type.GetType` to create a type from that assembly (using `AssemblyQualifiedName`), but the method returns `null`. If I set it to throw exception, it tells Could not load file or assembly '...' or one of its dependencies. The system cannot find the file specified. But I am sure the exact same assembly is already loaded (it shows in the `AppDomain.CurrentDomain.GetAssemblies()` list). Anybody has an idea what could be wrong and/or how to solve this issue?

Original source