Visual Studio 2008 - framework 3.5 - Visual Basic
Привет!У меня проблема со статическим методом, вызванным отражением.При загрузке моего win-wpf я создаю копию «A4Library.dll» с именем «_temp.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 в [B] MyType. Тип A происходит из ... в контексте" По умолчанию "'в позиции' F: \ MyPath \ A4Library.dll '. Тип B происходит от ... в контексте' LoadFrom 'в позиции' F: \ MyPath_temp.dll '. "}
Это странно: кажется, что конфликт с тем же методом в оригинальном .dll конфликтует, но я не могу понять, почему он смотрит на оригинал, а не на копию.Если файл .exe, относящийся к основной сборке, помещен в другой каталог, все работает нормально.
Я хочу, чтобы файл .exe находился в той же папке .dll, как я могу решить проблему?
Спасибо!Pileggi