我试图在运行时加载程序集,但我不确定为什么我不能使用 static 在程序集中创建类型的实例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()
.