我想從.NET服務中使用第三方COM DLL(我不相信它是一個.NET組件),但沒有註冊COM DLL,但我正在到目前爲止沒有運氣。在.NET應用程序中使用免費的註冊com
我已經從這裏複製清單文件(http://stackoverflow.com/questions/465882/generate-manifest-files-for-registration-free-com)用作起點(我生成了使用引用的mt.exe/regsvr42.exe的COM DLL清單)。但我得到的是以下錯誤:
異常:System.InvalidCastException 消息:無法將類型爲'LOGICLib.LogicClass'的COM對象轉換爲接口類型爲'LOGICLib.ILogic'。此操作失敗,因爲IID爲「{AAAAAAAA-AAAA-AAAA-AAAA-AAAAAA3E8FB4}」的接口的COM組件上的QueryInterface調用由於以下錯誤而失敗:沒有此類接口支持(異常來自HRESULT:0x80004002(E_NOINTERFACE)) 。 來源:Interop.LOGICLib 在LOGICLib.LogicSecuredClass.Connect(字符串IP,UINT16值,的Int32 &結果) 在My.Server.MyAssembly.Loader.Connect()中d:\ MyProject的\源\服務器\ MyAssembly程序\裝載機.cs:line 461
應用程序清單以啓動服務的exe命名 - 我也嘗試在調用COM DLL的程序集後命名它。我試過從命令行開始並通過Visual Studio的調試器。我也嘗試使用由第三方提供的Interop文件並生成我自己的文件。
(注意 - 我只在Windows XP下測試,到目前爲止)
我花了兩天時間在這現在並沒有進步可言。任何想法我可能錯過了?
愚蠢的問題。 LogicClass實際上是否實施了ILogic? – 2011-01-19 14:02:24
我相信如此。正如我已經回覆到DarkBobG,如果DLL註冊regsvr32,它都可以正常工作。 – cheesemp 2011-01-19 14:15:30
查看下面接受的答案 - 其固定,但並不簡單。謝謝各位的幫助。 – cheesemp 2011-01-21 11:15:05