簡體   English   中英

在.NET應用程序中使用免費注冊com

[英]Using registration free com in a .NET app

我試圖從.NET服務使用第三方COM DLL(我不相信它的.NET組件)而沒有注冊COM DLL,但到目前為止我沒有運氣。

我已經從這里復制了清單文件(http://stackoverflow.com/questions/465882/generate-manifest-files-for-registration-free-com)以作為起點使用(我使用生成的COM DLL清單)引用的mt.exe / regsvr42.exe)。 但是我得到的是以下錯誤:

異常:System.InvalidCastException消息:無法將類型為“LOGICLib.LogicClass”的COM對象強制轉換為接口類型“LOGICLib.ILogic”。 此操作失敗,因為由於以下錯誤,對IID為“{AAAAAAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA-AAAA 。 來源:Interop.LOGICLib at LOGICLib.LogicSecuredClass.Connect(String IP,UInt16 Value,Int32&Result)位於D:\\ MyProject \\ Source \\ Server \\ MyAssembly \\ Loader.cs中的My.Server.MyAssembly.Loader.Connect():行461

應用程序清單以啟動服務的exe命名 - 我也嘗試在調用COM DLL的程序集之后命名它。 我試過在命令行和Visual Studio的調試器上啟動。 我也嘗試使用第三方提供的Interop文件並生成自己的文件。

(注意 - 到目前為止我只在Windows XP下測試過。)

我現在花了兩天時間在這上面並沒有取得任何進展。 我可能錯過了什么想法?

應用程序清單以啟動服務的exe命名

是的,這不起作用。 Windows始終在EXE本身中查找清單,作為非托管資源嵌入。 只有當它找不到那個時才會在磁盤上查找.manifest文件。 問題是,使用VS2008構建的托管程序已經有了清單。 默認的只有“我知道Vista”。

您可以使用File + Open + File並選擇您的EXE來自行驗證。 打開RT_MANIFEST節點,然后雙擊資源1.如果沒有看到您的免注冊COM清單條目,那么它將不起作用。

要修復,請使用Project + Add New Item並選擇Application Manifest File項目模板。 您將獲得樣板清單,在那里復制並粘貼您的regfree COM條目。

好吧,從異常中,當您嘗試將LogicClass類型的對象強制轉換為ILogic的接口類型時,您會收到強制轉換錯誤。 看起來LogicClass沒有實現ILogic。

你沒有提供DLL或你得到它的地方,所以你最好的辦法是查看你想要使用的庫的文檔。 只是一個瘋狂的猜測,但看起來你正在錯誤地實現它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM