Использование регистрации бесплатно com в приложении .net

StackOverflow https://stackoverflow.com/questions/4736043

  •  12-10-2019
  •  | 
  •  

Вопрос

Я пытаюсь использовать стороннюю компонент (я не верю, что это компонент .NET) из сервиса .NET без регистрации Com DLL, но мне пока мне не повезло.

Я скопировал манифестные файлы отсюда (http://stackoverflow.com/questions/465882/generate-manifest-files-for-registration-free-com) для использования в качестве отправной точки (я сгенерировал манифест с использованием с использованием с использованием с помощью ссылка Mt.exe/regsvr42.exe). Однако все, что я получаю, это следующая ошибка:

Исключение: System.InvalidcastException Сообщение: невозможно разыграть com объект типа 'Logiclib.logicclass' type type 'logiclib.ilogic'. Эта операция не удалась, потому что вызов QueryInterface на компоненте COM для интерфейса с iid '{aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa3e8fb4}' не удалось из-за следующей ошибки: не поддерживается такой интерфейс (исключение из HRESult: 0x80004002 (e_nointerface))))) Анкет Источник: interop.logiclib at logiclib.logicsecuredclass.connect (string ip, uint16 value, int32 & result) на my.server.myassembly.loader.connect () в d: myproject source server myassembly loader.cs: line 461

Манифест приложения названа в честь EXE, который запускает службу - я также пытался назвать его после сборки, которая называет компанию. Я пытался начать командную строку и через отладчик Visual Studio. Я также попытался использовать файл Interop, поставляемый третьей стороной, и генерировать свой собственный.

(Примечание - до сих пор я тестировал только под Windows XP.)

Я провел два дня на это сейчас и вообще не прогрессировал. Есть идеи, что я, возможно, пропустил?

Это было полезно?

Решение

Манифест приложения назван в честь EXE, который запускает службу

Да, это не работает. Windows всегда ищет манифест в самом EXE, встроенном как неуправляемый ресурс. Только когда он не сможет найти его там, он будет искать файл. Манфишт на диске. Проблема в том, что управляемая программа, построенная с VS2008, и UP уже имеет манифест. По умолчанию говорит только «Я знает, что я знаю».

Вы можете проверить это для себя, используя файл File + Open + и выбрав EXE. Откройте узел RT_MANIFEST и дважды щелкните ресурс 1. Если вы не видите там свои бесплатные записи, которые там не будут работать.

Чтобы исправить, используйте Project + добавить новый элемент и выберите шаблон элемента файла приложения. Вы получите манифест Cowerplate, скопируйте и вставьте там свои записи Regfree Com.

Другие советы

Что ж, за исключением, вы получаете ошибку литой при попытке разыграть объект типа LogicClass в тип интерфейса Ilogic. Похоже, LogicClass не реализует Ilogic.

Вы не предоставили то, что находится DLL или где вы его получили, так что вы лучше всего просмотреть документацию для библиотеки, которую вы пытаетесь использовать. Просто дикое предположение, но похоже, что вы его реализуете неправильно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top