2011-01-06 34 views
8

Bir COM sunucusu oluşturuyor ve bunu kaydediyorum.COM istemcisinde bir COM başvuru eklenemiyor mu?

Bir COM İstemcisi'nde bu COM sunucusunu eklemeye çalıştığımda, ekleyemedim ve aşağıdaki hata geliyor.

" 'COMTEST' için bir referans

ActiveX Türü Kütüphane c '\ kullanıcı \ ~ \ ayıklama \ COMTest.tlb' bir .NET düzeneğinden dışa ve katma edilemeyen bir referans olarak eklenmez.

yerine "

herkes hata nedir bana söyleyebilir .NET için bir başvuru ekleyin. COM'u her iki şekilde de VS'den kaydediyorum ve ayrıca komut istemi ile denedim.

cevap

10

Bu, "neden Dünya üzerinde bunu yaparsınız" iletisidir. Proje + Ekle Referansı, Gözat sekmesi, DLL'yi seçin, TLB'yi değil. Bu nedenle, COM etkileşimi iki kez geçmek yerine doğrudan .NET sınıfını kullanacaksınız.

+15

IMO bu bir ** "neden bu dünyada çalışmıyor" durumu **. .NET derlemesi COM sunucusu olarak kullanılabilir (* "Basittir! Sadece ComVvisible özniteliğini ekleyin!" *), .NET uygulamaları COM istemcileri olabilir (* "nwe ve en son güncellemeyle geliştirildi" *). Tam bir uyarı değil, bir uyarı olmalı. ----- Kullanım durumu: .NET ile bir yerel COM bileşeni değiştiriyorum, ancak .NET istemcisi her ikisi ile uyumlu kalması gerekiyor. – peterchen

+1

.. Bu doğru göz atabilirim. Ama ben COM öğreniyorum ve ben hata anlayamıyorum! Ben de tlb yanı sıra DLL kaydediyorum .... Ben de snk anahtar verdi. @peterchen .... ComVisible (true), İkisini de denedim, hata açıklayabilirim. – PawanS

+1

İstemci kodunu farklı bir dilde yazmalısınız. Javascript, VBScript, VB6, bunun gibi bir şey. Geç bağlama desteklenir, VB.NET bunun için iyi bir dildir. Veya C# 4'teki * dinamik * anahtar sözcüğü. –

2

Söz veriyorum .tlb. .dll,

'a başvurmalısınız ve regsvr32 ile kaydettirdikten sonra, com sekmesinde .d. Daha fazla bilgi için here'a bakın.