2013-04-12 53 views
-1

我創建了一個VS 2010類庫。爲Com可見性標記組件。用強大的鑰匙在大會上簽字。創建我的課程,讓我的入門點方法可用。VS 2010程序集中的COMVisible類仍然不可見通過com

該庫在C#中的測試項目中正常工作。

我regasm類庫到GAC,通過: C:\ WINDOWS \ microsoft.net \框架\ v4.0.30319 \ regasm testdll.dll/TLB:testdll.tlb /代碼庫

包含的TLB文件作爲我的VB6項目的參考。我通過資源'瀏覽'找到它,所以它在那裏。

當我嘗試實例化類......它的空。不應顯示應通過公共課程提供的公共方法。

Dim objTest as testdll.testclass 
set objTest = new testdll.testclass 

objTest.testmethod <--- this 'testmethod' doesn't display in intellisense... nothing does. 

另外我打過電話通過創建對象的「testdll.testclass」,我得到的錯誤「ActiveX組件不能創建對象」

現在我有其他的項目,我已經做了COM能見度我試着比較差異,但我沒有看到任何。我不明白爲什麼它不起作用。

任何線索?非常多。

+0

你REGSVR32的.TLB?我也不明白,但我仍然可以使用這種類型。 – ken

+0

嗯......我需要添加一個界面嗎?我沒有在我的其他項目中這樣做,它的工作原理......我正在閱讀另一篇文章,這篇文章談到了這件事。 – user1161137

+0

你不能regsvr32一個TLB ...不是什麼Regasm在做什麼? – user1161137

回答

1

只需使用一個接口...一個定義或使用[ClassInterface(ClassInterfaceType.AutoDual) 有評論在網上,你可以發現,表明不使用autodual,但如果你控制的完整使用您的圖書館,它似乎是一個'好'的方式去。

我嘗試了各種方法來模擬/理解爲什麼我的一個項目不需要一個界面可以被vb項目看到而沒有成功。我原本以爲也許可能是因爲該項目實現了一個IDisposable接口(在C#項目中使用的唯一接口,com com可見),但這並不是原因。無論如何,我不想浪費其他人的時間。感謝您的迴應。

此鏈接提供關於這個問題的充足信息: http://anturcynhyrfus.blogspot.com/2011/03/creating-com-visible-c-component.html