VB6 вызывает VB.NET вызывает стороннюю ошибку COM DLL
У меня есть EXE в VB6, который вызывает недавно обновленную до VB.Net DLL. Эта часть работает нормально, но проблема, с которой я сталкиваюсь, связана с поиском взаимодействия другой библиотеки DLL, на которую ссылается DLL библиотеки VB.Net.
Обзор: EXE (VB6) вызывает метод A DLL (VB.Net), никаких проблем. Метод A из DLL вызывает метод B сторонней DLL (COM), он получает ошибку, поскольку не может найти файл взаимодействия COM DLL.
Я протестировал непосредственно в VB.Net, используя тестовый интерфейс для вызова того же метода A в DLL-библиотеке VB.Net, и все работает нормально. Я в настоящее время в растерянности относительно того, что вызывает проблему.
Спасибо Крис
1 ответ
Я наконец нашел ответ на вопрос. Все сказано и сделано, проблема была в том, что сборки взаимодействия были версией фреймворка 4.0, а не версией фреймворка 2.0. Visual Studio по какой-то причине создал их таким образом, поэтому мне пришлось изменить их, используя Visual Studio 2008 для создания их новых версий.
Процесс, чтобы выяснить это (большинство из которых уже было сказано выше, но повторено здесь для удобства) состоял в том, чтобы поместить все мои библиотеки VB.NET и библиотеки сборки взаимодействия в каталог исполняемого файла VB6. (Я создал подпапки для каждой из них для упрощения очистки позже.) Это все равно приводило к той же самой ошибке, но журнал сборщика сборки показал другую причину ошибки. На этот раз он смог загрузить сборку без проблем, но не смог завершить настройку сборки.
Изучение этого привело меня к идее проверки базовых версий сборок взаимодействия с использованием ILSpy, чтобы выяснить, являются ли они версией 4.0, а мои библиотеки - версией 2.0.
Первоначально я пытался воссоздать их в Visual Studio 2017, поскольку в моем проекте используется framework 2.0, но он по какой-то причине все же создал их как framework 4.0. Затем я попытался в Visual Studio 2008, и он смог создать правильные версии сборочных взаимодействий на основе 2.0, и теперь все работает, как ожидалось.