I am trying to load an assembly at runtime, and I'm unsure as to why I can't create an instance of a type in the assembly using the static Activator.CreateInstance(). It works with Assembly.CreateInstance().

string assemblyFilename = "MyAssembly.dll";
string assemblyName = "MyAssembly";
string typeName = "MyAssembly.MyType";

FileInfo fileInfo = new FileInfo(assemblyFilename);

This works:

var assembly = Assembly.LoadFrom(assemblyFilename);
Form form = (Form)assembly.CreateInstance(typeName);

But this does NOT work:

Assembly.LoadFrom(assemblyFilename);
Form form = (Form)Activator.CreateInstance(assemblyName, typeName).Unwrap();

FileNotFoundException thrown:

Could not load file or assembly 'MyAssembly' or one of its dependencies. The system cannot find the file specified.

EDIT:

In both cases, after the Assembly.LoadFrom() call, I can see that my assembly has been loaded when I look in AppDomain.CurrentDomain.GetAssemblies().

Edit
Report