2011-11-28 4 views
1

.dll 파일이 있는지 확인한 다음로드하는 것이 가장 쉬운 방법은 무엇입니까? (나는 그 dll 파일에서 모듈을 사용할 필요가 없다. 단지 그것을 실행하고 싶다)..dll 파일이 있는지 확인하고로드하십시오.

간단한 코드 예제가 필요합니다.

+0

System.Reflection 당신이 관리되지 않는 DLL 또는 관리 하나를 사용하려고 가져 오기해야합니까? VB.NET에는 Declare 문이 있지만 dllimport 태그로 인해 관리되지 않는 것으로 가정합니다. – Timiz0r

답변

3

파일이 존재하는지 확인하려면 system.io.file.exists(path)을 사용하십시오. 어셈블리 모양을 Assembly.Load에로드하려면 코드를로드 한 다음 해당 어셈블리의 형식에 Activator.CreateInstance을 호출하여 코드를 실행할 수 있습니다. 일단 당신이 그것의 메소드를 호출 할 수있는 타입의 인스턴스를 가진다.

쉽게 호출 할 수 있도록 어셈블리의 형식에 정의 된 인터페이스가없는 경우 Reflection을 사용하여 해당 형식의 형식과 메서드를 검사해야합니다. 그것은 점점 더 복잡해지기 시작하고 당신이하려고하는 것에 대한 구체적인 예가 없으면 코드에서 실제로 어떻게하는지에 대한 예제를 줄 수는 없습니다.

업데이트 예를

단지 동적으로로드 된 어셈블리에서 코드를 실행하는 가장 간단한 방법 사전에 그것에 대해 몇 가지를 알고이 포함됩니다.

실행할 코드가 들어있는 Type의 이름, 코드가 들어있는 메서드 이름 및 걸리는 매개 변수를 미리 알아야합니다. 이 예제에서는 어셈블리에 항상 "MyClass"라는 클래스가 있고 실행하려는 코드는 매개 변수가없는 "Execute"라는 하위에 있다고 가정 해 보겠습니다. 이렇게로드하고 실행할 수 있습니다.

당신은

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 
+0

감사! 내 해킹 방지 시스템 (. dll 파일)을 VB 응용 프로그램에 포함 시키려고합니다. 간단한 .dll 파일, 그냥 작동 시키려면로드해야합니다. 그게 다야. – John

+0

어셈블리에서 코드를 실행하는 "간단한"방법을 포함하도록 내 대답을 업데이트했습니다. –

+0

질문에서 "dllimport"태그를 발견했습니다. 귀하의 질문에 non.net dll에서 관리되지 않는 코드를 실행하는 경우 내 대답은 적용되지 않습니다. 관리되는 어셈블리에서 코드를 실행하기위한 것입니다. –

관련 문제