Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

dll missing

[es] :: .NET :: dll missing

[ Pregleda: 4326 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

twister

Član broj: 735
Poruke: 147
195.250.117.*



Profil

icon dll missing16.06.2003. u 22:12 - pre 220 meseci
Napravio sam svoj dll i u postojeci projekat ga dodao sa add reference...
I dok je dll tu, sve radi... ali kada obrisem dll i pokrenem program iz windowsa (ne VS-a), program puca kada pokusa da pozove metodu iz pomenutog dll-a. Try catch ne hvata ovaj exception, vec se javlja VS-ov debugger sa unhandled exception itd...
 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.microsoft.com



+18 Profil

icon Re: dll missing16.06.2003. u 22:29 - pre 220 meseci
Tako je, to je by design. U cemu je konkretno problem?
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: dll missing16.06.2003. u 22:49 - pre 220 meseci
Pa šta si očekivao da se desi?
 
Odgovor na temu

twister

Član broj: 735
Poruke: 147
195.250.117.*



Profil

icon Re: dll missing17.06.2003. u 03:38 - pre 220 meseci
ocekivao sam da sledeci kod uhvati exception:

try
{
MojaKlasaIzDLLa.StatickaMetoda(); //ne mora staticka, bilo sta
}
catch
{
///blablabla
}

e problem je ako ne postoji taj dll, program puca a ne ulazi u catch blok. A glupo je da pisem funkciju koja ce da proba da nadje u direktorijumu i global cache-u (ili gde vec), dll koji ce program da koristi. Jednostavno, zasto try/catch ne hvata ovaj vid exceptiona? I kako to da resim osim na pomenuti nacin?
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: dll missing17.06.2003. u 18:13 - pre 220 meseci
Ako si taj dll (neka .NET komponenta, pretpostavljam) dodao u projekat sa Add reference, onda je se on učitava čim program startuje i ako ga nema, program puca. Nikad i ne stigne do tog tvog try-catch bloka. Naravno, postoji i mogućnost dinamičkog učitavanja, ali to je malo komplikovanije.
 
Odgovor na temu

twister

Član broj: 735
Poruke: 147
195.250.117.*



Profil

icon Re: dll missing17.06.2003. u 19:01 - pre 220 meseci
Ne puca. Upravo sam ponovo otkucao kod i evo kako stvari stoje:

u dll projektu je klasa koja nema nista osim praznog konstruktora.
u aplikaciji je uradjen add reference na ovaj dll.
u aplikaciji na dugme btn1 samo kreiram klasu sa
mojaklasa tmp = new mojaklasa();
naravno, okolo je i try/catch kod iz prethodne poruke i to je sav kod.
izadjem iz devenv-a, odem u bin direktorijum aplikacije, obrisem *.pdb i *.dll tako da ostane samo mojaapp.exe
pokrenem mojaapp.exe i TEK KADA KLIKNEM na dugme btn1 iskace prozor sa exception-om! A try/catch ga NE HVATA!

izgleda da mi ostaje samo da dinamicki ucitam dll samo da bi proverio da li postoji.
 
Odgovor na temu

havramm
Miroslav Havram
Software Developer / Engineer
Beograd

Član broj: 4603
Poruke: 255
*.proxy.cg.yu



Profil

icon Re: dll missing21.06.2003. u 01:22 - pre 220 meseci
Citat:
Dragi Tata: Ako si taj dll (neka .NET komponenta, pretpostavljam) dodao u projekat sa Add reference, onda je se on učitava čim program startuje i ako ga nema, program puca.

Kao sto je twister zakljucio, ovo nije tacno, a zbog cega:
Citat:
Kada se neka metoda pozove po prvi put, CLR otkriva koje tipove metoda referencira. ... CLR ucitava datoteku referenciranog sklopa samo onda kada se pozove metoda koja referencira tip iz tog sklopa. To znaci da se za pokretanje neke aplikacije, ne zahteva prisustvo svih referenciranih skopova.
Jeffrey Richter, Applied Microsoft .NET Framework Programming, MSPress, 2002


Sto se tice toga sto ne uspevas da uhvatis exception, pretpostavljam da windows forms okruzenje (Application ili nesto slicno...) hvata izuzetke najviseg nivoa (znaci klasu Exception, prakticno unhandled exception, mada...) ne dopustajuci da to uradi sama aplikacija. Ovo samo pretpostavljam, nisam siguran. Ako neko tacno zna sta se desava, bio bih mu zahvalan ako bi to podelio sa ostalima.

Pozdrav
If it's a girl then they're gonna call it Sigourney, after an actress. If it's a boy, then they're gonna call it Rodney, after Dave!
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: dll missing23.06.2003. u 19:56 - pre 220 meseci
Hehehe, mislim da sam provalio u čemu je stvar. Taj izuzetak nije bačen kad pozoveš funkciju sa MojaKlasaIzDLLa.StatickaMetoda(); već pre toga - odmah po pozivu funkcije OnClick. Naime, ako pogledate onaj citat koji je ostavio havramm, lepo kaže:

Citat:
CLR ucitava datoteku referenciranog sklopa samo onda kada se pozove metoda koja referencira tip iz tog sklopa


Dakle, dll se učitava kad se pozove metoda koja koristi tip iz tog dll-a, a ne kad se pozove prva metoda iz tog tipa. Izuzetak je bio bačen odmah po pozivu OnClick metoda i nikad se nije ni stiglo do try-catch bloka.
 
Odgovor na temu

havramm
Miroslav Havram
Software Developer / Engineer
Beograd

Član broj: 4603
Poruke: 255
*.proxy.cg.yu



Profil

icon Re: dll missing24.06.2003. u 00:18 - pre 220 meseci
Svaka cast!
If it's a girl then they're gonna call it Sigourney, after an actress. If it's a boy, then they're gonna call it Rodney, after Dave!
 
Odgovor na temu

[es] :: .NET :: dll missing

[ Pregleda: 4326 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.