我正在尝试在运行时加载一个程序集,但我不确定为什么使用静态 Activator.CreateInstance()
无法创建程序集中类型的实例。而使用 Assembly.CreateInstance()
则可以正常工作。
string assemblyFilename = "MyAssembly.dll";
string assemblyName = "MyAssembly";
string typeName = "MyAssembly.MyType";
FileInfo fileInfo = new FileInfo(assemblyFilename);
这个可行:
var assembly = Assembly.LoadFrom(assemblyFilename);
Form form = (Form)assembly.CreateInstance(typeName);
但是这个方法不起作用:
Assembly.LoadFrom(assemblyFilename);
Form form = (Form)Activator.CreateInstance(assemblyName, typeName).Unwrap();
抛出FileNotFoundException异常:
无法加载文件或程序集'MyAssembly'或其某个依赖项。系统找不到指定的文件。
编辑:
在这两种情况下,在调用Assembly.LoadFrom()
之后,当我查看AppDomain.CurrentDomain.GetAssemblies()
时,我可以看到我的程序集已加载。