DLL
EXE
Børre Stenseth
C#>Assemblies

Assemblies

Hva
Assemblies: dll- og exe-filer

Begrepet assembly bukes om en samling med ressurser, kode eller data. En assembly er som navnet tilsier ordnet, kompilert, og den har et definert grensesnitt mot omverdenen. En assembly er den minste enheten som kan distribueres.

En assembly er enten en .exe - fil eller en .dll - fil. Exe-filer kjenner vi som executables og er måten vi pakker "programmer" på. EXE-filer kan "kjøres", altså startes som selvstendige enheter. DLL-filer har også vært med i Windows fra starten og står for Dynamic Link Libraries. Exe-filer er (nesten) alltid avhengige av dll-filer. Om de ikke er avhengige av biblioteker som vi eller andre programkonstruktører har laget, så er de avhengige av biblioteker i operativsystemet. Det som i prinsippet skiller en exe-fil fra en dll-fil er at exe-fila har et entrypunkt, en main-metode, som er synlig for operativsystemet og som startes når vi dobbeltklikker på en slik fil eller anroper den fra kommandolinja.

Ingen av disse filtypene, dll og exe, er nye, men de har fått delvis nytt innhold og de behandles på nye måter i .Net. .Net forenkler bruken av dynamiske biblioteker betraktelig i forhold til det vi kjenner fra tradisjonell Windows.

En assembly-fil kan best sammenlignes med jar-filer i Java. På samme måte som jar-filer, inneholder assemblyfiler metadata. Blandt annet et manifest som er en slags innholdsfortegnelse. På samme måte som i jar-filer er det dette manifestet som sier noe om entry-punktet, main metoden. Metadataene i en assembly inneholder informasjon om metoder, klasser og andre programelementer og de kan inspiseres av ulike typer verktøy. Du vil se at editoren i Visual Studio har innsikt i assemblies som du har koplet til. Det finnes også egne assembly-inspeksjonsprogrammer. NDoc, se: Dokumentasjon, arbeider også med metadata i assemblies.

Assemblies, kan men trenger ikke, registreres i Windows registry. Når vi skal distribuere et program, så trenger vi bare legge exe-fila og spesielle dll-filer i samme katalog. Vi kan registrere dll-filer slik at de blir gloable, i den betydning at de alltid er tilgjengelige for alle programmer på vår maskin. Dette kan du observere når du i Visual Studios Solution Explorer ber om å få lagt til References. Du vil da som førstevalg få en liste over slike "globale" dll-filer, men du kan også velge å browse til en eller flere spesielle dll-filer som finnes i en eller annen katalog. Når Visual Studio bygger din solution, program, så blir de nødvendige, ikke-globale, dll-filene kopiert til den katalogen exe-fila plasseres i.

Assemblies har versjonsmerking. Det vil si at ulike versjoner av samme dll-fil kan eksistere samtidig, og vi kan kontrollere hvilken versjon vi bruker. Dette at vi slipper å registrere assemblies, at vi kan forholde oss til metadata og at vi dermed har versjonskontroll fjerner det som av mange, både brukere og programmerer, er omtalt som "dll hell"

Referanser
  1. .NET Reflectorredgatewww.red-gate.com/products/reflector/23-12-2010
Vedlikehold

B.Stenseth, desember 2009

(Velkommen) C#>Assemblies (Moduler)