簡體   English   中英

嘗試實例化位於可執行文件中的COM對象時,COM Interop:System.InvalidCastException

[英]COM Interop: System.InvalidCastException when trying to instantiate COM object located in an executable

使用COM互操作,嘗試實例化以C ++編碼並在COM可執行服務器中運行的COM對象時,我的C#客戶端代碼具有以下異常:System.InvalidCastException:無法將類型為'System .__ ComObject'的對象轉換為類型“ XXX”。 (其中XXX是我的C#代碼中用於COM對象的類類型)

包含COM對象的可執行文件與客戶端代碼在同一台計算機上運行。 我已驗證COM對象已在Windows注冊表中正確注冊。

實例化在我的項目中沒有系統地失敗。 我至少需要執行3次才能看到失敗。 在我們的CI系統中運行的測試期間,我遇到了同樣的問題。

問題已解決:我的項目使用2個程序集,這些程序集引用了用於實例化COM對象的Interop dll。 這兩個程序集中的一個將“ EmbedInteropTypes”設置為true,而另一個將相同的屬性設置為false。 將“ EmbedInteropTypes”都設置為false可以解決此問題。

我仍在尋找關於為什么不起作用的良好解釋。 我發現了發生類似問題的其他項目: https : //github.com/yck1509/ConfuserEx/issues/302

暫無
暫無

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

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