Как я могу использовать «ссылку» VB6 COM в IronPython? - PullRequest
2 голосов
/ 06 августа 2009

В настоящее время я разрабатываю сценарий, который должен более или менее получить некоторые данные из COM-библиотеки VB 6 COM. Эта библиотека в настоящее время используется в проекте MS Word VBA и экспортирует классы и т. Д. В код VBA. Он добавлен в меню «Инструменты» -> «Ссылки» в редакторе VBA, и я вижу его классы в браузере объектов VBA.

Из моих чтений можно использовать COM-библиотеку VB6 в VB.NET (или, по крайней мере, она должна это делать). Как это должно быть возможно в VB.NET, и поскольку CLR, и поскольку IronPython логически не может получить доступ к этой древней DLL из IronPython?

Я пробовал import clr; clr.AddReferenceToFileAndPath(dllpath) в IronPython, но продолжаю получать 'IOError: файл не существует', что явно неверно.

Если кто-нибудь может указать мне на использование COM-объекта VB6 на / any / .NET языке, это будет с благодарностью.

Спасибо!

PS: Нет, я не могу редактировать / просматривать исходный код COM DLL, это сторонняя собственность. PPS: В любом случае, я могу получить имя GUID / COM '; из длл?

Ответы [ 2 ]

1 голос
/ 06 августа 2009

Вам необходимо сгенерировать сборку Runtime COM Wrapper с помощью инструмента tlbimp и добавить ссылку на нее; языки, которые поддерживают атрибуты .net, могут явно взаимодействовать, но даже там автоматическая генерация оболочки намного проще.

Проверка сборки оболочки в ildasm покажет, как именно было выполнено преобразование.

0 голосов
/ 06 августа 2009

На любом языке .NET (в Visual Studio не уверены, что там есть полная поддержка языка IronPython или он работает только на CLR с .NET Framework?), Вы просто переходите в диалоговое окно «Добавить ссылку», выбираете вкладку «COM». выберите библиотеку (как в диалоговом окне ссылок на VB6 / VBA) и все готово. Затем VisualStudio создает сборку взаимодействия .NET, которая является посредником в библиотеке COM, и вы можете просто использовать ее, как если бы это была сборка .NET. Если IronPython поддерживается в VisualStudio, это, вероятно, то, что вам следует делать.

Если нет, то вам нужно выяснить, какой инструмент командной строки VisualStudio использует для создания сборки взаимодействия (немного похоже на WSDL.EXE, который используется при добавлении веб-ссылки), используйте этот инструмент для генерации сборки взаимодействия и используйте это из IronPython так же, как и с любой другой сборкой .NET. У меня сейчас нет никаких подробностей для вас без проверки Google / MSDN, так как я работаю только на C # внутри VisualStudio, так что я сам никогда в действительности не нуждался в этом.

...