Visual Studio 2008 - 框架3.5 - Visual Basic反射和靜態方法的奇怪問題
嗨! 我有一個由反射調用的靜態方法的問題。 在加載我的win-wpf時,我在原來的同一個目錄下創建一個名爲「_temp.dll」的「A4Library.dll」副本。 然後,在一個按鈕單擊事件,我調用在這樣的_temp.dll一個靜態方法:
Dim AssemblyFileName As String = Directory.GetCurrentDirectory() & "\_temp.dll"
Dim oAssembly As Assembly = Assembly.LoadFrom(AssemblyFileName)
Dim TypeName As String = "MyLibrary.MyService"
Dim t As Type = oAssembly.GetType(TypeName)
Dim mi As MethodInfo = t.GetMethod("MyMethod", BindingFlags.Static AndAlso BindingFlags.Public)
Dim bResponse As Boolean = mi.Invoke(Nothing, New Object() {MyPar1, MyPar2})
但這隻有當我的.exe文件不在的同一目錄下運行良好.dll文件,否則我得到這個錯誤(翻譯):
InnerException {「[A] MyType上不可能的[A] MyType。類型A源於...在上下文'默認'在位置'F:\ MyPath \ A4Library.dll'。類型B起源於......在位置'F:\ MyPath_temp.dll'的上下文'LoadFrom'中。「}
這很奇怪:看起來至與原始.dll中的同一方法發生衝突,但我不能承認它爲什麼會查看原始文件而不是副本。如果與主體程序集相關的.exe文件放置在另一個目錄中,則所有程序運行良好。
我需要將.exe放在.dll的同一文件夾中,我該如何解決該問題?
謝謝! Pileggi
非常感謝!我需要這樣做,因爲有時我需要替換.dll,我認爲很難卸載已經加載的程序集的運行時。 – lamarmora 2010-12-14 16:12:23