我無法在COM中公開.NET程序集。看來,我必須失去一些基本的步驟,因爲我覺得我跟所有的教程和文檔,我發現還有常識,但仍當我做(在測試的VBScript):將.NET程序集公開爲COM 101
Set o = CreateObject("MyLib.MyClass")
它口口聲聲說該對象無法創建。
下面是我做的步驟:
- 我有一個不帶屬性的簡單方法之一啞類。
- 該類是在類庫中有在Visual Studio中打勾爲「使程序集COM可見」。
- 類庫已簽名。
- 該DLL是通過註冊RegAsm.exe與/codebase參數(我不希望/不能將該DLL添加到GAC)。
可以肯定的是,我試圖將庫複製到與測試VBScript相同的目錄中,但它沒有幫助。
編輯:我應該提到我可以在COM中實例化類,如果我把該DLL放入GAC。
編輯:已解決。我沒有一個完整的解釋,但最終我發現,通過使用它造成的:
%WINDIR%\ Microsoft.NET \框架\ V2.0.50727 \ RegAsm.exe
,而不是64位版本:
%WINDIR%\ Microsoft.NET \ Framework64 \ V2.0.50727 \ RegAsm.exe
我比較的兩個RegAsm的的生成註冊表項,它們是相同的。所以猜測他們生成的東西不是註冊表項。
確切的錯誤是什麼?什麼是堆棧跟蹤?我不知道它是否會找到你的DLL(因爲你使用了/ codebase參數),但是找不到其他的依賴DLL。 – PatrickSteele 2010-03-25 12:01:13
我打算調查錯誤的詳細信息,但在此之前,我已經認爲這是因爲AsmReg版本錯誤(請參閱下面的答案)。此外,它曾經在GAC中工作,並且該庫確實有任何依賴關係。所以這個問題最可能的根源似乎是一些註冊問題。 – 2010-03-25 13:02:12