最简单的想要检查.dll文件是否存在,然后加载它是什么? (我不需要使用该dll文件中的模块,我只想运行它。)
我想提供简单的代码示例。
答案 0 :(得分:3)
要检查文件是否存在,请使用system.io.file.exists(path)
。
要加载程序集,请查看Assembly.Load
,您可以通过加载它来执行代码,然后在该程序集的类型上调用Activator.CreateInstance
。一旦你有了这种类型的实例,就可以在其上调用方法。
如果没有为程序集中的类型定义接口以便于调用,则必须使用Reflection来检查这些类型的类型和方法。这开始变得越来越复杂,没有你想要做的具体例子我不能给你一个如何在代码中实际做的例子。
更新示例
从动态加载的程序集中执行代码的最简单方法是提前了解一些相关内容。
您应事先知道包含要执行的代码的Type
的名称,包含代码的Method的名称以及所需的参数。对于这个例子,假设你总是在程序集中有一个名为“MyClass”的类,而你想要运行的代码位于一个名为“Execute”的子代中,它不带任何参数。您可以像这样加载和执行它。
您应该导入System.Reflection
Dim asm as Assembly = Assembly.LoadFrom("TheDll.dll") 'Load the assembly
dim t as type = asm.GetType("MyClass") 'Get a reference to the type that contains the code
dim info as MethodInfo = t.GetMethod("Execute") 'Get a reference to the method on the type that we want to call
dim instance as object = Activator.CreateInstance(t) 'Create an instance of the type to call the method on
info.Invoke(obj,nothing) 'Invoke the method with no parameters