Я нахожусь в процессе разработки приложения .NET, которое опирается на устаревший элемент управления OCX. Этот элемент управления обеспечивает интерфейс терминала, позволяющий пользователю взаимодействовать с системой бронирования авиабилетов. Он уже успешно использовался в нескольких приложениях VB6, но в дальнейшем нам нужно / нужно использовать его в приложениях .NET.
Итак, для Windows XP (x86) с использованием .NET 4 и Visual Studio 2010 я создал приложения Winforms и WPF, которые используют элемент управления, который был правильно зарегистрирован. Я внедрил Reg Free COM и, используя XCOPY и Click-Once, оба проекта могут быть успешно развернуты на компьютерах с Windows XP (x86), и оба работают как положено, без необходимости регистрировать элемент управления. К сожалению, этого нельзя сказать о развертывании в Vista (x86) и Windows 7 (x64), где приложение запускается, но элемент управления не отображается.
В попытке понять проблему я попытался зарегистрировать элемент управления в моей среде разработки Windows 7 (x64). Я пробовал оба:
- регистрация элемента управления с использованием обычного regsvr32 (реестр x64)
- регистрация элемента управления, размещенного в каталоге SysWOW64, с использованием SysWOW64-версии regsvr32 (реестр x86)
В обоих случаях элемент управления, похоже, успешно зарегистрирован, и в новом проекте Winforms я могу добавить элемент управления на панель инструментов (появляются значки и т. Д.). Однако, как только я перетаскиваю элемент управления в форму, он появляется в виде крошечного прямоугольника в углу формы (а не в окне терминала, как в XP), даже файлы Interop генерируются так же, как в XP?!
Управление как в XP
Элемент управления, как видно в Windows 7 при выборе
Я потратил целую вечность, пытаясь найти решение или подобные проблемы, но безрезультатно. Любые предложения приветствуются!
Обновление 1:
В соответствии с предложением @DanielHilgarth, я создал базовое приложение в VB6, используя элемент управления, и запустил его в Windows 7 (x64), и, к сожалению, он принимает зарегистрированный COM-компонент и работает, как ожидается, даже если приложение или проект .NET может быть запущен рядом и никакого контроля не видно!?
Обновление 2
Если я создаю базовое приложение Winforms на моем компьютере с XP, используя элемент управления (но требующий регистрации элемента управления, то есть не рег). Когда это выполняется на моем компьютере с Windows 7 (x64), if не сможет запуститься (как ожидалось) без регистрации элемента управления. Для приложения не имеет значения, зарегистрирован ли элемент управления в реестре x86 / x64, в любом случае он запустится, но элемент управления не виден!?
Обновление 3
Я заметил, что если я запустил проект Winforms (созданный в XP и COM бесплатно) в моей среде Windows 7, то конструктор форм завершится ошибкой, если элемент управления, зарегистрированный (как и ожидалось), снова не будет заботиться о том, какой реестр компонент зарегистрирован. После регистрации дизайнер формы будет виден (без контроля), а при сборке будут видны следующие предупреждения:
Исследование этого предупреждения было бесполезным, похоже, оно указывает на то, что Visual Studio ищет неправильный путь в реестре, но я не могу найти способ решить эту проблему?