изменить версию dll взаимодействия, созданную в vb6 при использовании в .net - PullRequest
1 голос
/ 04 декабря 2010

Я столкнулся с проблемой при обращении к vb6 dll в проекте .net.Когда бы я ни ссылался на dll vb6 в проекте .net, dll взаимодействия создается с той же версией (1.2.0.0).Это создает для меня проблему, так как установка, используемая для развертывания приложения на стороне клиента, не заменяет dll, если версия такая же, как и раньше.Я хочу изменить версию dll взаимодействия (созданный с помощью vb6 dll).Я прочитал это Cam сделал с использованием tlbIMP, но как создать файл TLB для DLL VB6.Или есть какой-то другой способ добиться этого.

Спасибо Saurabh

Ответы [ 2 ]

4 голосов
/ 04 декабря 2010

Имеет очень небольшой смысл отличать номер версии библиотеки взаимодействия от номера версии библиотеки типов, созданной VB6. Существует взаимно-однозначное соответствие между тем, что в библиотеке взаимодействия, и кодом, который вы написали в VB6. Библиотека взаимодействия просто содержит объявления IL для COM-интерфейсов VB6, фактического кода нет. CLR использует его для быстрой генерации RCW для интерфейса.

Измените номер версии библиотеки типов в VB6 с помощью Project + Properties, вкладки Make, номера версии. Главным и второстепенным является то, что имеет значение. Делайте это только тогда, когда вы вносите изменения в общедоступные классы VB6. Это необходимо, кстати, он избегает DLL Hell.

3 голосов
/ 04 декабря 2010

Вот небольшой командный файл, который мы используем для создания нашей dll взаимодействия, поэтому он имеет строгое имя:

sn.exe -i MichiganLTAP.pfx MagicContainerName

tlbimp.exe ourVb6.dll /out:Our.Strongnamed.Interop.dll /asmversion:7.1.0.0 /keycontainer:MagicContainerName /machine:X86 /namespace:Our.Strongnamed /verbose /sysarray

sn.exe -d MagicContainerName

Важный переключатель с вашей точки зрения: /asmversion:7.1.0.0

Вы должныустановить то, что вы хотите.Посетите страницу MSDN Library для получения дополнительной информации о доступных переключателях.

...