2010-12-04 28 views
1

我在.net項目中引用vb6 dll時遇到了問題。當我在.net項目中引用vb6 dll時,interop dll會創建爲相同版本(1.2.0.0)。它的創建問題,作爲用於在客戶端部署應用程序的設置,如果版本與以前相同,則不會替換該dll。我想更改interop dll的版本(使用vb6 dll創建)。我讀它使用tlbIMP凸輪完成,但如何創建vb6 dll的tlb文件。或者還有其他方法可以實現這一點。在.net中使用時創建的vb6中創建的互操作dll版本.net

感謝 SAURABH

+2

您想更改VB6 DLL *的版本,而無需在VB6 *中重新編譯它?如果你還沒有對VB6 DLL進行修改,爲什麼你應該有理由增加版本號? – 2010-12-04 15:35:48

+0

vb6 dll中有更改,其版本在重新編譯後更新,但在.NET中引用此dll時創建的interop dll版本未更新。由於哪個設置沒有替換該文件 – Saurabh 2010-12-05 13:58:20

回答

3

下面是我們用它來創建我們的互操作的dll,所以它強命名的小批處理文件:

sn.exe -i MichiganLTAP.pfx MagicContainerName 

tlbimp.exe ourVb6.dll /out:Our.Strongnamed.Interop.dll /asmversion:7.1.0.0 /keycontainer:MagicContainerName /machine:X86 /namespace:Our.Strongnamed /verbose /sysarray 

sn.exe -d MagicContainerName 

從您的角度來看的重要開關是:/asmversion:7.1.0.0

你應該能夠將其設置爲任何你想要的。查看MSDN Library page瞭解更多關於可用開關的信息。

+0

是的,我非常確定能夠指定版本,你必須手動創建互操作,不要讓VS爲你做。 – DarinH 2010-12-07 22:24:16

4

它使得使interop庫的版本號不同於由VB6創建的類型庫的版本號的意義不大。在互操作庫中的內容與您在VB6中編寫的代碼之間存在一對一的映射關係。互操作庫只包含VB6 COM接口的IL聲明,沒有實際的代碼。 CLR使用它來快速生成接口的RCW。

使用Project + Properties,Make選項卡,版本號更改VB6中的類型庫版本號。主要和次要是重要的。只有在公開顯示的VB6類中進行更改時才能執行此操作。這樣做是需要順便說一句,它避免DLL地獄。