Обновление приложения с .NET 3.5 до 4.0, COM теперь не работает - PullRequest
1 голос
/ 19 апреля 2010

У меня есть приложение, которое я обновляю с .NET 3.5 до .NET 4.0 framework. Он использует библиотеку COM, на которую ссылаются. В 3.5 это работает без проблем, но после перехода на 4.0 у меня возникают проблемы с получением COM для работы. COM от третьего лица, поэтому мы сами его не разработали.

Я получаю следующую ошибку COM (общая ошибка COM, не относящаяся к самому объекту COM): hr = 0x8007000b

CLR дает мне: «При вызове конструктора типа« Skype_Business_Launcher.Main », соответствующего указанным ограничениям связывания, возникла исключительная ситуация». Номер строки «3» и позиция «5».

И журналы C #:

=== Предварительная привязка информации о состоянии === LOG: пользователь = \ phillip LOG: DisplayName = Interop.SKYPE4COMLib, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = ноль (Полностью указано) LOG: Appbase = file: /// bin / Debug / LOG: Initial PrivatePath = NULL

Вызов сборки: Skype Business Launcher, версия = 1.0.5.0, культура = нейтральная, PublicKeyToken = ноль.

LOG: эта привязка начинается в контексте загрузки по умолчанию. LOG: Использование файла конфигурации приложения: LOG: использование файла конфигурации хоста: LOG: использование файла конфигурации компьютера из C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ config \ machine.config. LOG: Политика, не применяемая в настоящее время для ссылки (частная, пользовательская, частичная или привязка сборки на основе местоположения). LOG: Попытка загрузки нового файла URL: ///bin/Debug/Interop.SKYPE4COMLib.DLL. ERR: не удалось завершить настройку сборки (hr = 0x8007000b). Зондирование прекращено.

Я удалил путь из соображений безопасности, но я проверил всю информацию о пути, и все это правильно. Также файл библиотеки COM существует там, где он указывает. Он также копируется в папку OBJ внутри проекта.

Изначально я получал сообщение о том, что библиотека COM не поддерживает встроенные типы, поэтому я установил значение «Внедрить типы взаимодействия» в ложное значение (это было верно ниже), и ошибка исчезла, но я не уверен, связано ли это с этой ошибкой или Я не думал, что упомяну это на всякий случай.

Опять же, он отлично работает с 3.5.

Спасибо

Ответы [ 2 ]

3 голосов
/ 20 апреля 2010

Снимок в темноте: похоже, вы используете версию платформы x64. Это было уже в случае с 3,5? И является ли COM-сервер DLL или EXE-файлом?

Если COM-сервер является DLL-библиотекой, между DLL и вашей программой должно быть совпадение битности.

0 голосов
/ 09 августа 2010

при преобразовании проекта в 4.0 в среде IDE может возникнуть проблема преобразования библиотеки COM в 4.0.

когда вы конвертируете свой проект в 4.0, удалите com-библиотеку, затем включите ее в свой проект, тогда я думаю, она должна работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...