2015-03-12 3 views
0

Я создал класс оболочки для загрузки CLR4 (.net) в CLR2 (vb6). Он работает, вроде.vb6 Сохраняет старую ссылку заблокирован

Я компилирую свою программу в .net (4.0) и запускаю командный файл для создания .tlb. Я отказываюсь от .tlb от моей программы vb6, и все это потрясающе.

Когда я меняю обертку и переделываю вышеуказанный процесс, vb6 не увидит новый .tlb, он все еще использует старый.

... Что-нибудь?

+0

Попробуйте использовать метод 'CreateObject()' вместо добавления ссылки. –

ответ

1

Попробуйте удалить старый tlb перед тем, как развернуть новый. Откройте оболочку cmd и введите «regsvr32/u mytlb.tlb», затем разверните новую и запустите regsvr32 снова без переключателя/u.

для получения дополнительной информации см. https://technet.microsoft.com/en-us/library/bb490985.aspx.

+0

Я так понимаю, и это то, что я думал, однако я не регистрирую файл tlb и не могу отменить регистрацию файла tlb, потому что это не действительная сборка .net, потому что я получаю – DidIReallyWriteThat

1

У нас есть аналогичная ситуация здесь, на работе (хостинг vb6 для хостинга .net).

Вы хотите запустить REGASM/unregister * .dll. * .tlb - это продукт запуска REGASM/TLB.

Если у вас есть проект .net, зарегистрированный для COM-взаимодействия, он должен сделать это для вас при построении.

+0

, это то, что я делал, так как я решил, что он удаляет все .dll везде, восстанавливая его и перезапуская командный файл, и это решило мою проблему. Однако это нехорошее долгосрочное решение – DidIReallyWriteThat

+0

вам нужно только зарегистрировать (это помещает запись в regedit под HKEY_CLASSES_ROOT \ TypeLib), если вы не переместите файл, например, после слияния в другую ветку. Похоже, вы открыли VB при восстановлении .NET. Это будет проблемой. Сначала закройте VB. – kevcoder