The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

.NET 4.0 專案參考 COM 元件需注意是否內嵌 Interop 型別

我公司最近正如火如荼的採用 .NET 4.0 全新技術做開發,但最近在升級舊有專案時發現有個專案升級的並不順利,由於該專案有參考一個 PKI 加密元件,該元件是採用 COM 技術做開發,所以在以前在專案裡參考 COM 元件時都會預設產生一個 Interop 組件可供參考,但 .NET 4.0 提供一個內嵌 Interop 型別的功能,當你在 Visual Studio 2010 將 .NET 3.5 專案升級上 .NET 4.0 後該 Interop 組件的參考屬性預設會設定為 True,這就有可能導致專案無法編譯的問題。

遇到這個問題在專案編譯時大概會出現以下錯誤:

  • 型別 XXXAtxServer.ServerClass' 沒有已定義的建構函式
  • 無法內嵌 Interop 型別 'AresEmsgAtxServer.EmsgServerClass'。請改用適當的介面。
  • 'PKI_ATXLib.AtxCertificateClass' 不包含 'SN' 的定義,也找不到擴充方法 'SN' 來接受型別 'PKI_ATXLib.AtxCertificateClass' ���第一個引數 (您是否遺漏 using 指示詞或組件參考?)

解決方法也很簡單,只要參考以下步驟即可解決:

1. 只要將專案 [參考] 的 COM 元件選取,並按下 F4 開啟屬性視窗

   

2. 在將 [內嵌 Interop 型別] 設定為 False 即可!

   

相關連結