14. september 2005 - 16:04Der er
5 kommentarer og 1 løsning
ActiveX component i ASP
Hej
Jeg har et problem som jeg bare ikke kan forstå:
Jeg har i Visual Studio oprettet et VB projekt som jeg koder en dll i, denne dll ønsker jeg at kunne tilgå fra asp via
Server.CreateObject("MyLib.MyClass");
Det er lykkedes, ved at jeg har kompileret dll'en med flagget "Register for COM Interop", som gør at Visual Studio builder en COM wrapper til dll'en (COM vs .NET hokuspokus).
MEN - når jeg derefter tilføjer en metode til min dll's MyClass og rekompilerer, kan jeg stadig kun tilgå de metoder som var tilgengelige i først build. Hvorfor ??!
Jeg går udfra det er fordi den ikke opdaterer dll wrapperen .. men jeg har snart prøvet alle muligheder .. bl.a vhj. regasm, tlbexp og så videre ... jeg ved metoden er synlig i dll'en (har kigget i ildasm) .. men altså i bund og grund må det være et versionsspørgsmål ikke sandt ??
Hvis jeg ikke husker helt forkert - så opdaterer den versionsnummeret på COM DLL - kig i assembly.cs under version der står noget 1.0.* så den opdaterer ved kompilering. Det betyder at du får en masse versioner a COM DLL registreret under udvikling. Prøv at sætte version til noget statisk sålænge du udvikler på den så skulle det gerne fungerer.
hmm - det lød som en god ide .. men det virker stadig ikke. Jeg har buildet dll'en en gang mere - testen den i et andet .NET projekt.. det virker godt nok. Men ligeså snart jeg forsøger med med at kalde den i et script (vhja new ActiveXObject og kaldt den både fra IIS og cscript) - ja så kan den ikke køre den metode jeg lige har sat ind...
Tilgengæld har jeg fået det til at virke unden at bruge "Register for COM Interop" overhovedet.. jeg builder en dll, tilføjer den som assemply til GAC, og kører regasm på den .. så virker det fint.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.