Я сталкиваюсь со следующей проблемой при развертывании составной сборки на моем клиенте. COM-компонент должен использоваться приложением vb6. Вот как это делается
1) У меня есть один проект на c #, в котором есть класс с парой методов, доступных для COM
2) В проекте есть ссылки на несколько сборок
3) Я компилирую проект, генерируя папку (с именем dllcom), которая содержит сборку плюс все упомянутые dll
4) Я включаю в папку .bat, который делает следующее:
regasm /u c:\dllcom\LibInsertador.dll
del LibInsertador.tlb
regasm c:\dllcom\LibInsertador.dll /tlb:c:\dllcom\LibInsertador.tlb /codebase c:\dllcom\
pause
5) После локального запуска летучей мыши на многих рабочих станциях моей лаборатории я могу без проблем использовать сгенерированный tlb из моего приложения vb6. Я даже могу обновить dll только с помощью запуска этой летучей мыши, без необходимости перекомпилировать приложение vb6. Я имею в виду, что у меня нет проблем с поиском vb6 и вызовом выставленного com-объекта.
Проблема
6) Я отправляю ЖЕ ПАПКУ своему клиенту
7) Они выполняют .bat локально, без ошибок
8) Они выполняют приложение vb6, vb6 находит основную сборку, кажется, что код .net работает правильно (он даже способен генерировать файл журнала) до тех пор, пока ему не понадобится создать свою первую ссылочную сборку. Затем они получают следующее исключение:
"Не удалось загрузить тип 'GYF.Common.TypeBuilder' из сборки 'GYF_Common, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = ноль'."
Где "GYF.Common" - это сборка, на которую ссылается LibInsertador, а TypeBuilder - класс, содержащийся в GYF.Common. GYF.Common не является подписанной сборкой и не находится в GAC, просто в одной папке с Libinsertador. Согласно .net отражателю, версия верна.
¿Любые идеи о том, что может происходить?