2011-11-28 93 views
1

最簡單的方法是檢查.dll文件是否存在,然後加載它? (我不需要使用該dll文件中的模塊,我只是想運行它)。檢查.dll文件是否存在並加載

我想要簡單的代碼示例。

+0

你嘗試使用非託管的DLL或管理的一個?我假設因爲dllimport標籤而不受管理,儘管VB.NET具有'Declare'語句。 – Timiz0r

回答

3

要檢查文件是否存在,請使用system.io.file.exists(path)。 要加載程序集,請參閱Assembly.Load,您可以通過加載代碼來執行代碼,然後在該程序集的類型上調用Activator.CreateInstance。一旦你有一個類型的實例,你可以調用它的方法。

如果您沒有在程序集類型上定義的接口以方便調用,則必須使用Reflection來檢查這些類型的類型和方法。這開始變得越來越複雜,沒有一個你想要做的具體例子,我不能給你一個如何在代碼中實際做到的例子。

更新例如

只是從一個動態加載的程序集執行代碼的最簡單方法涉及到了解關於它的一些事情提前。

您應該事先知道Type的名稱,其中包含要執行的代碼,包含代碼的方法的名稱以及所需的參數。對於這個例子,假設你總是在名爲「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 
+0

謝謝!我試圖將黑客防禦系統(一個.dll文件)加入到我的VB應用程序中。一個簡單的.dll文件,我只需要加載它,讓它工作。而已。 – John

+0

我已經更新了我的答案,以包含從程序集中執行代碼的「簡單」方式。 –

+0

我剛剛在問題中注意到了你的「dllimport」標籤。如果您的問題涉及從非.NET dll執行非託管代碼,那麼我的答案將不適用。它僅用於從託管程序集執行代碼。 –