Я пытаюсь использовать стороннюю COM DLL (я не верю, что это компонент .NET) из службы .NET без регистрации COM DLL, но пока мне не повезло.
Я скопировал файлы манифеста отсюда (/280368/sozdat-faily-manifesta-dlya-com-bez-registratsii) для использования в качестве отправной точки (я сгенерировал манифест COM DLL с помощью mt.exe / regsvr42.exe, на который есть ссылка). Однако я получаю только следующую ошибку:
Исключение: System.InvalidCastException
Сообщение: Невозможно привести объект COM типа «LOGICLib.LogicClass» к типу интерфейса «LOGICLib.ILogic». Эта операция завершилась неудачно, поскольку вызов QueryInterface для компонента COM для интерфейса с IID '{AAAAAAAA-AAAA-AAAA-AAAA-AAAAAA3E8FB4}' завершился неудачно из-за следующей ошибки: такой интерфейс не поддерживается (исключение из HRESULT: 0x80004002 (E_NOINTERFACE)) ,
Источник: Interop.LOGICLib
в LOGICLib.LogicSecuredClass.Connect (строковый IP, значение UInt16, Int32 и результат)
в My.Server.MyAssembly.Loader.Connect () в D: \ MyProject \ Source \ Server \ MyAssembly \ Loader.cs: строка 461
Манифест приложения назван в честь exe-файла, который запускает службу - я также попытался назвать его после сборки, которая вызывает COM DLL. Я попытался запустить из командной строки и через отладчик Visual Studio. Я также попытался использовать файл Interop, предоставленный третьей стороной, и создать свой собственный.
(Примечание. До сих пор я тестировал только под Windows XP.)
Я потратил два дня на это сейчас и вообще не прогрессировал. Любые идеи, что я, возможно, пропустил?