Скрестить VB проект с шарповым кодом

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Скрестить VB проект с шарповым кодом

Сообщение jangle » 26.12.2013 (Чт) 9:58

Без шарпового кода в современных условиях уже никуда.
Думаю делать COM-совместимые сборки и вызывать их из VB кода.
Зачем это нужно? Хочу получить максимум эффективности от нативного кода VB6 и огромную библиотеку C# проектов.
Беспокоят следующие вопросы.

1. Как устанавливать C# сборки с VB проектом? У меня используется InnoSetup. Он вроде бы не умеет регистрировать .NET библиотеки в GAC.
Делать отдельный инсталлятор для C# сборок очень не хочется.

2. Нужно ли включать дистрибутив .NET Framework 4.0 в инсталлятор? (прокт для Windows 7, 8 )

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Скрестить VB проект с шарповым кодом

Сообщение Debugger » 26.12.2013 (Чт) 10:19

Сейчас маюсь такой же вещью (C# dll + VB6 GUI). Идея хорошая, но можно огрести проблем в самых неожиданных местах - Automation Error, которые непросто поймать, работающий из IDE код и валящийся из EXE, проблемы с полями-массивами и множество других граблей. Так что если есть возможность - делай на чем-то одном.
jangle писал(а):1. Как устанавливать C# сборки с VB проектом? У меня используется InnoSetup. Он вроде бы не умеет регистрировать .NET библиотеки в GAC.
Делать отдельный инсталлятор для C# сборок очень не хочется.

Для регистрации достаточно вызвать regasm соответствующей версии фреймворка. Если хочешь GAC - Википедия говорит, что gacutil тебе поможет.
jangle писал(а):2. Нужно ли включать дистрибутив .NET Framework 4.0 в инсталлятор? (прокт для Windows 7, 8 )

Таскать с собой фреймворк ради небольшой программульки вряд ли стоит - в таких случаях обычно дают ссылку на скачку. Но, похоже, у тебя не этот случай - и несколько сотен лишних метров никак не скажутся на размере дистрибутива.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Скрестить VB проект с шарповым кодом

Сообщение jangle » 26.12.2013 (Чт) 10:27

Debugger писал(а):Сейчас маюсь такой же вещью (C# dll + VB6 GUI). Идея хорошая, но можно огрести проблем в самых неожиданных местах - Automation Error, которые непросто поймать, работающий из IDE код и валящийся из EXE, проблемы с полями-массивами и множество других граблей. Так что если есть возможность - делай на чем-то одном.


Почему возникают Automation Error? Ты уже делал инсталлятор для своего проекта?

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Скрестить VB проект с шарповым кодом

Сообщение Debugger » 26.12.2013 (Чт) 10:43

jangle писал(а):
Debugger писал(а):Сейчас маюсь такой же вещью (C# dll + VB6 GUI). Идея хорошая, но можно огрести проблем в самых неожиданных местах - Automation Error, которые непросто поймать, работающий из IDE код и валящийся из EXE, проблемы с полями-массивами и множество других граблей. Так что если есть возможность - делай на чем-то одном.


Почему возникают Automation Error? Ты уже делал инсталлятор для своего проекта?

Automation Error возникает, когда dll старой версии, а обращаемся мы к ней, как к новой.
В моём случае программа компактная, и инсталлятор у меня в виде батника (и READEME с ссылками : ) , который копирует и регистрирует нужные библиотеки.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Скрестить VB проект с шарповым кодом

Сообщение Mikle » 26.12.2013 (Чт) 10:46

jangle писал(а):Хочу получить максимум эффективности от нативного кода VB6 и огромную библиотеку C# проектов.

Во-первых, эффективность примерно равна.
Во-вторых, мне кажется более правильным цеплять VB6 код к шарповскому, а не наоборот.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Скрестить VB проект с шарповым кодом

Сообщение Хакер » 26.12.2013 (Чт) 11:57

Debugger писал(а):Automation Error возникает, когда dll старой версии, а обращаемся мы к ней, как к новой.

Потому что, скорее всего, кто-то делает анти-правильные вещи. Нужно делать неизменную фабрику, порождающую изменяющиеся в неких пределах объекты, поддерживающие неизменный интерфейс.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Скрестить VB проект с шарповым кодом

Сообщение Debugger » 26.12.2013 (Чт) 12:10

Хакер писал(а):
Debugger писал(а):Automation Error возникает, когда dll старой версии, а обращаемся мы к ней, как к новой.

Потому что, скорее всего, кто-то делает анти-правильные вещи. Нужно делать неизменную фабрику, порождающую изменяющиеся в неких пределах объекты, поддерживающие неизменный интерфейс.

Да, именно так я и делаю. В какой-то момент всё-таки понадобилось поменять интерфейс (обертка над графическими девайсами) - при всём желании спецификация двигается вперед непредсказуемо, и позарез надо было добавить один метод. В итоге получил вот такой подзатыльник.

Короче, jangle, если очень хочешь этим заниматься - купи валерьянки и вперед.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 26.12.2013 (Чт) 12:19

jangle писал(а):Зачем это нужно? Хочу получить максимум эффективности от нативного кода VB6 и огромную библиотеку C# проектов.

Что делает VB'шный код и какие основания считать шарпоский неэффективным?

jangle писал(а):Думаю делать COM-совместимые сборки и вызывать их из VB кода.

Ещё можно использовать экспортируемые функции, но с ними замучаешься.
Думаю, COM действительно лучше.

jangle писал(а):2. Нужно ли включать дистрибутив .NET Framework 4.0 в инсталлятор? (прокт для Windows 7, 8 )

Конечно нет. Если что, то просто просить установить. Можно дать ссылку на соответствующую страницу майкросовтовского сайта.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re:

Сообщение jangle » 26.12.2013 (Чт) 13:39

Qwertiy писал(а):
Что делает VB'шный код и какие основания считать шарпоский неэффективным?


GUI на шарпе очень тормозной, VB в этом отношении быстрее на порядок

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 26.12.2013 (Чт) 14:12

jangle писал(а):GUI на шарпе очень тормозной, VB в этом отношении быстрее на порядок

Вот уж в это я совсем не поверю...

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re:

Сообщение jangle » 26.12.2013 (Чт) 14:16

Qwertiy писал(а):
jangle писал(а):GUI на шарпе очень тормозной, VB в этом отношении быстрее на порядок

Вот уж в это я совсем не поверю...


У меня на i5/i7 GUI тормозит, про более слабые машины и говорить нечего.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 26.12.2013 (Чт) 14:33

Ты точно о WinForms?

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re:

Сообщение jangle » 26.12.2013 (Чт) 15:06

Qwertiy писал(а):Ты точно о WinForms?


WinForms+COM Controls


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 56

    TopList