Visual Studio 2008 - каркас 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})
Но это хорошо работает только тогда, когда я ЕХЕ файл не находится в той же директории .dll, в противном случае я получаю эту ошибку (в переводе):
InnerException {"Невозможно [My] MyType в [B] MyType. Тип A происходит от ... в контексте 'Default' в position 'F: \ MyPath \ A4Library.dll'. Тип B возникает из ... в контексте «LoadFrom» в позиции «F: \ MyPath_temp.dll». »
Странно: кажется, в быть конфликтом с тем же методом в исходном .dll, но я не могу согласиться с тем, почему он смотрит на оригинал, а не на копию. Если файл .exe относительно основной сборки помещен в другой каталог, все работает хорошо.
У меня есть файл .exe в той же папке .dll, как я могу решить проблему?
Спасибо! Pileggi
Большое спасибо! Мне нужно сделать это, потому что иногда мне нужно заменить .dll, и я думаю, что довольно сложно выгрузить среду выполнения уже загруженной сборки. – lamarmora