2012-07-11 41 views
1

我設置了正被暴露在VB6和大會的文件名似乎是一個.NET程序集與VB6使用時名被幹擾它創建了這個類。設置COM顯示組件/類的名稱/進程id爲COM客戶

我試圖找到是否有一個.NET屬性或設置,我可以提供,這將允許我控制在VB6中創建的對象實例。這純粹是一種美好的事情,我知道它會全部被編譯下來,但我喜歡看起來不錯的東西。

在我的.NET程序集上,我有以下屬性,請注意,ProgID似乎對編譯沒有任何區別。

< 
ComSourceInterfaces(GetType(IManagerEvents)), 
Guid(Manager.ClassId), 
ClassInterface(ClassInterfaceType.None), 
ProgId("IdealposWebIt.Manager") 
> _ 
Public Class Manager 
    Implements IManager 

在在VB6世界引用這個類的時候,它似乎是組件的文件名被錯位成爲進程id的一部分。

Private Sub Form_Load() 
    Dim orderManager As Idealpos_WebIT_Connector.Manager 
    Set orderManager = New Idealpos_WebIT_Connector.Manager 

有什麼我可以做的改變它嗎?我應該把它吸吮公主。

請注意,一切都在VB6內部正確創建和運行,但我只是喜歡它很好地顯示。

+1

ProgID *是* ProgID。那個暴露的名字是別的。例如'CreateObject(「IdealposWebIt.Manager」)'應該按預期工作,如果它已經註冊。 – 2012-07-11 01:36:39

回答

1

經過大量搜索,並查看了.NET中沒有MIDL編譯器的C++材料後,您無法控制暴露給COM的名稱。

任何名義您在項目中的程序集名稱使用的是獲取COMified用於基於COM的應用程序(早期綁定),使用該名稱。所以在這種情況下,該項目的程序集名稱是Idealpos.WebIT.Connector然後成爲Idealpos_WebIT_Connector所以做出了COM,你將不得不改變你的.NET項目名稱,這並不總是東西你願意做一個較短的名稱。

我希望這可以幫助未來的人。