2012-08-14 112 views
0

我有一個.Net COM可見的dll和一個VB6 dll。我在GAC上註冊了.NET dll並註冊了VB6 dll。我的問題是,VB6 dll可以引用GAC中的.Net dll。如果是,那怎麼辦?通常我會使用.net dll上的regasm,一切都會好的,但現在.Net dll在GAC中,所以我不認爲這種方法是可行的。可以vb6 dll使用.net com可見dll是gac

回答

1

有沒有什麼特別之處,將來自如果你使用的GAC工作停止這個或嘗試從VB6 DLL使用項目。如果要編寫早期綁定代碼(實際類型名稱,自動完成工作),那麼VB6 IDE需要一個類型庫。它們通常嵌入在DLL內部,但.NET [ComVisible]程序集不是這種情況。

使用Tlbexp.exe或Regasm.exe的/ tlb命令行選項創建一個類型庫。像:

regasm foo.dll /tlb:foo.tlb 

現在,您可以在您的VB6項目中使用的類型庫。在VB6 IDE中,使用「項目+引用」,單擊「瀏覽」並導航到foo.tlb文件。

另請注意,雖然GAC是避免DLL Hell的好方法,但您通常不會在開發計算機上使用它,因爲它會污染計算機的GAC。使用Regasm/codebase選項將它註冊到存儲DLL的目錄中,然後不需要GAC。當你這樣做時,你會從Regasm那裏得到一個警告,試圖提醒你,你冒着DLL冒險的危險。但這對您的用戶來說是一個問題,而不是爲了您。所以你可以放心地忽略這個警告。

0

這是可能的,但該方法取決於您如何部署您的.Net DLL。

如果通過腳本做到這一點,你可以這樣做:

  1. 您的DLL複製到文件夾,例如c:\ Program Files文件\ myProduct的\ MYDLL.DLL
  2. 使用regasm註冊你的DLL文件COM互操作
  3. 使用GACUTIL擺在進入GAC

如果你使用Visual Studio安裝項目: 1.添加全球Assemly緩存特殊的文件夾項目 2.設置dll的目標文件夾爲GAC 3.將Register屬性設置爲vsdraCOM

如果您無法從VB6添加對.Net DLL的引用,請從.Net創建一個.tlb文件DLL使用tlbexp並添加對類型庫的引用。

這是該過程的更詳細的說明的鏈接:http://www.simple-talk.com/dotnet/visual-studio/build-and-deploy-a-.net-com-assembly/