我试图加载第三方assemblies
动态到项目和使用reflection
来创建它们的类型的实例。如何动态地将程序集加载到当前应用程序域到c#项目中?
我用:
Assembly.LoadFrom("Assembly1.dll")
Assembly.LoadFrom("Assembly2.dll")
Assembly.LoadFrom("Assembly3.dll")
此外,尝试:
AppDomain.CurrentDomain.Load("Assembly1.dll")
AppDomain.CurrentDomain.Load("Assembly2.dll")
AppDomain.CurrentDomain.Load("Assembly3.dll")
不过,我不断收到The method is not implemented
例外,当我尝试创建自己的类型如下的一个实例:
Assembly.LoadFrom("Assembly1.dll")
Assembly.LoadFrom("Assembly2.dll")
Assembly assembly= Assembly.LoadFrom("Assembly3.dll")
Type type=assembly.GetType("Assembly3.Class1")
object instance=Activator.CreateInstance(type); //throws exception at this point
但是,如果我直接add reference
到作为sembly1,Assembly2和Assembly3项目做:
Assembly3.Class1 testClass=new Assembly3.Class1();
我没有得到任何例外
我只是想知道我做错了吗?如何动态地将组件加载到项目。我猜是因为创建Class1
实例取决于另一个程序集Assembly1
和Assembly2
,所以它失败了。那么,如何将所有相关程序集动态加载到appdomain/loadcontext
。
非常感谢您的回答。
在另一个线程中回复:http://stackoverflow.com/a/18362459/4997569 – ArcangelZith
不是真的!只加载_one assembly_并实例化它的'type'。我已经尝试过了。但没有奏效。我**多个程序集**加载到“当前上下文”并创建一个实例 –