Šta je novo?

Nedostaju property memberi VB6 COM DLL-a u .NET

RazbojNick

Čuven
Učlanjen(a)
05.02.2004
Poruke
5,909
Poena
815
Dva tesno povezana problema

Stanje:
Jedan .NET 4.0 projekat referencira VB6 COM dll i koristi jednu klasu (interfejs). Sav kod je 32bitni (ekplicitno je namešteno na x86).

Mašina 1: Win 7 Pro + VS2013 SP5 Ultimate edition (UE),
mašina 2: Win2012R2 + VS2013 SP4 Community Edition (CE)


- Prvi deo problema:
Kada se isti VB6 interfejs instancira na prvom računaru, nema problema. Kada se isto uradi na CE, nedostaju svi Property memberi, ostanu samo metode i eventovi pod Intellisense!

Medjutim, kako VB6 ima get_ i set_ metode za svaki property, u CE može da se dodje do svakog property-ja izmenjenim kodom, dok u UE nema ovih metoda, već direktno ime svojstva.
Kako to izgleda na računarima:

RačunarWin 7 + UEWin2012R2 + CE
GET accessorvar vrednost = instanca.imeSvojstva1;var vrednost = instanca.get_imeSvojstva1();
SET accessorinstanca.imeSvojstva1 = vrednost;instanca.set_imeSvojstva1(vrednost);

Kao što se vidi, razlika u kodu postoji i to narušava prenos projekata/koda sa mašine na mašinu. Kod iz tabele ne radi unakrsno na računarima.
COM DLL, koji je deo reference, a pisan je u Delphi 7, ne u VB6, bez problema dobija svojstva u listi intellisense-a i na 2012r2.

DLL-ovi su ispravni i isti na oba računara, jer ih VB6 aplikacije koriste najnormalnije. VB6 DLL-ovi referencirani u .NET Console i Class library ne rade, sa gorenavedenim problemima, dok u Windows Desktop exe-u rade na Win2012 sistemu.


- Drugi deo problema:

Web servis za IIS kompajliran na prvom računaru ne može da se izvrši na drugom, jer se prijavljuje greška da ne može da se učita VB6 biblioteka (can't load library), jer QueryInterface ne radi. Dakle, puca već kod instanciranja i samo na Win 2012R2.




Šta može da bude problem? Koliko sam ja ispratio, CE Visual Studio je siromašniji opcijama (nema template i neke zgodne alatke), ali kod se podjednako tumači.
 
Nazad
Vrh Dno