我公司最近正如火如荼的採用 .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 即可!
相關連結