Avatar billede the_party_dog Nybegynder
26. juli 2006 - 13:41 Der er 9 kommentarer og
1 løsning

Dll filer i dll fil

Hej alle sammen.

Nu sidder jeg og roder med en omgang dll filer. Jeg har lavet en masse små moduler, som jeg skal bruge som bygge sten i mange af mine fremtide projekter.

Jeg har f.eks. lavet en klasse/dll(benævnt 1. Dll) som kan udlæse værdier fra en XML fil. 1. Dll laver jeg en reference til i et andet projekt, som også ender ud i en dll(benævnt 2. Dll) fil.

Nu er det sjove så, at når jeg kører mit program så har en reference til 2. Dll, så bliver 1. Dll automatisk oprettet og lagt i min applikations folder.

But how? But why? Jeg havde godt nok regnet ud at min dll fil ville indeholde de dll filer den skulle bruge under afvikling. Jeg forventede ikke at den ville pakke dem ud og ligge dem i applikations folderen.

Nogen som kan komme med en overordnet beskrivelse/grund og evt. nogle links til nogle sider som har dette som et emne?
Avatar billede casualty Nybegynder
26. juli 2006 - 13:49 #1
Det er visual studio der automatisk hiver refererede DLL´er ind i dit projekt. Hvis du kører applikationen udenfor VS, så vil du opdage at det ikke sker...
Avatar billede casualty Nybegynder
26. juli 2006 - 13:57 #2
Ydermere så indeholder din DLL fil ikke andre DLL filer. De vil altid ligge hver for sig, med referencer til hinanden. VS kender disse referencer og sørger for at kopiere refererede "class library" assemblies til mappen hvor den eksekverende applikation ligger.

Mvh Anders
Avatar billede the_party_dog Nybegynder
26. juli 2006 - 14:07 #3
Så vi er enige om at jeg skal have alle generationer af dll filer liggende i min applikations mappe, for at den kan virker korrekt. Kan vi blive enige om det?

Jeg har nemlig lige prøvet at rive 1. Dll fil væk fra min applikation, ganske rigtigt, så blev min dll fil ikke oprettet igen, men applikationen kørte heller ikke mere, da den fik en access exception, fordi den ikke kunne finde 1. dll fil.
Avatar billede casualty Nybegynder
26. juli 2006 - 14:17 #4
Jeg forstår ikke hvad du mener med generationer.

Der er 2 muligheder og du nævner selv den første.

1 - Alle DLL filer samt exe ligger i samme mappe. Hurtigt og let, men ikke så godt hvis flere applikationer skal bruge de samme DLL filer.

2 - DLL filerne tilføjes GAC (Global access cache), hvorved de ikke behøver at ligge i samme mappe. Dette er godt hvis DLL filerne bruges af flere applikationer.

Når din applikation starter leder den efter referencer, i mappen hvor exe ligger samt i GAC.

Mvh Anders
Avatar billede casualty Nybegynder
26. juli 2006 - 14:18 #5
Og ja vi er enige. Jeg forstår bare ikke hvad du mener med generationer :)
Avatar billede the_party_dog Nybegynder
26. juli 2006 - 14:31 #6
Hehe... Jeg prøver lige igen.

Jeg har lavet en dll fil som kan tjekke applikations mappen for xml filer. Alle filer bliver læst igennem for at finde indstillings værdier.

Den dll bruger jeg til den dll fil som kan kommunikere med serial port, som manipulere med det data som serial porten kommer med. Dll filen laver et event når den er klar.

Dll filen til serial porten har jeg brugt i et test program, for at se at mine events kommer som de skal. Når jeg ser i test mappen, ser jeg at både serial dll filen OG Xml konfigurations dll filen ligger der. Det undre mig, da jeg forventede at når jeg lavede en dll fil, som inkludere andre dll filer, ville det hele ende som en dll fil. Så jeg slap for at have mere end en dll fil liggende i applikations mappen.

Så når jeg hentyder til "generationer", betyder det generation af "led" som jeg har lavet.
Avatar billede casualty Nybegynder
26. juli 2006 - 14:55 #7
Ok...

Det hele ender ikke som én DLL fil. DLL filer bliver ikke pakket ind i hinanden. Når du fra én DLL laver en reference til en anden DLL skaber du bare et envejs kendskab imellem DLL´erne.
Avatar billede md_craig Nybegynder
26. juli 2006 - 19:20 #8
Som casualty siger, så referere to til en anden dll når du vælger den i dit projekt...
(Den ligger også under referencer jo)...

det heder jo et Dynamic Link Library af gode grunde... (eller Dynamically Linked Library)...

Her er lidt Wiki om dem: http://en.wikipedia.org/wiki/Dynamic-link_library
Avatar billede the_party_dog Nybegynder
29. september 2006 - 10:30 #9
Some one hit me with an answer ;-)
Avatar billede casualty Nybegynder
02. oktober 2006 - 13:04 #10
Værsågod :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester