webForumDet fria alternativet

Kompilera DLL Filer

.NETur .NET

13 svar · 444 visningar · startad av pellesvenne

Medlem sedan jan. 2002227 inlägg
Frågan#1

vad används dem till i asp.net och vad tjänar man på att kompilera dll filer?

Medlem sedan apr. 2004778 inlägg
#2

I ASP så exekverades koden i .asp sidorna av webbservern när någon tittade på sidan.
I ASP.NET så är koden förkompilerad. Detta innebär att du kan använda olika språk, t.ex. C#, J# och VB.NET i samma webbapplikation.
Om du använder dig av code-behind så ligger denna i en .aspx.vb fil vilket måste kompileras.
I ASP så använde man scriptspråk, dessa översätts av browsern. I .NET använder du "riktiga" programmeringsspråk som måste översättas, dvs kompileras, INNAN browsern kan förstå vad som ska göras. Webbservern använder den kompilerade koden och skickar sedan resultatet till browsern.
Med andra ord så måste du kompilera din kod om du ska hålla på med .NET.
Om du använder Visual Studio .NET så kompilerar den allt åt dig. I bin mappen så finns det en .dll fil som heter samma som ditt webbprojekt. Denna innehåller information om alla filerna i sajten.

Jag rekommenderar att du införskaffar en bra lärobok för ASP.NET. Min favoritbok är ASP.NET Unleashed av Stephen Walther. Med den lärde jag mig grunderna i ASP.NET och jag använder den fortfarande som referens.

Medlem sedan jan. 2002227 inlägg
#3

okej grymt! och vad är en assembly?

Medlem sedan apr. 2004778 inlägg
#4

En .dll fil är en assembly.

Medlem sedan feb. 200435 inlägg
#5

Assemblyn är enheten i vilken MSIL (MicroSoft Intermediate Language) koden är lagrad. Det finns stora likheter med vanliga dller eller exefiler fast assemblys har egenskapen att de är självbeskrivande.

En assembly innehåller egentligen en massa saker. I delen som beskriver assemblyn själv (kallas för manifest) finns exempelvis dessa saker:
assembly namn
assemblyversion
refererade assemblies
med mera.

vidare innehåller en assembly information om de datatyper som finns i MSIL delen av assemblyn. En assembly kan även innehålla applikationsresurser så som ikoner och ljud.

en assembly kan vara en applikation (.exe). Har den ändelsen .dll är det ett klassbibliotek. Den enda egentliga skillnaden är att det i exe-filen finn det en inträdespunkt till programmet.

Kolla i boken Essential .net (Don Box och Chris Sells) om du vill veta mer om assemblies

Medlem sedan jan. 2002227 inlägg
#6

jaha så jag har redan en assembly kompilerad automatisk behöver jag inte göra något? mer

Medlem sedan juni 20011 732 inlägg
#7

Använder du visual studio så har varje projekt en fil som heter AssemblyInfo som bland annat innehåller versionshanteringen.

pellesvenne skrev:

jaha så jag har redan en assembly kompilerad automatisk behöver jag inte göra något? mer

Om du inte använder code behind så kommer webbservern automatiskt kompilera koden till minnet första gången den exekveras (någon går in på sidan).

Medlem sedan feb. 20013 023 inlägg
#8

PDahlen skrev:

I ASP så använde man scriptspråk, dessa översätts av browsern.

Nja, ASP tolkas inte av browsern utan av ASP-scriptmotorn på webbservern...till klienten skickas HTML...

Medlem sedan jan. 2002227 inlägg
#9

Så här ser min AssemblyInfo.vb ut!
ska man ändra nått?

Imports System.Reflection
Imports System.Runtime.InteropServices

<Assembly: AssemblyTitle("")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("")>
<Assembly: AssemblyCopyright("")>
<Assembly: AssemblyTrademark("")>
<Assembly: CLSCompliant(True)>

<Assembly: Guid("AB4546E2-86D2-4E0F-8EBC-8CD85CE17C34")>

<Assembly: AssemblyVersion("1.0.*")>

Medlem sedan apr. 2004778 inlägg
#10

Nej, du ska inte röra nånting i assemblyinfo.vb.

Medlem sedan maj 20012 812 inlägg
#11

Så här har jag förstått det hela.

Du har 3 lägen.

1. Okompilerade filer, alltså endast aspx filer, eller aspx med codebehind som inte är kompilerad.

2. Kompilerad codebehind filer, alltså aspx filer och dll filer.

3. Filer inladdade i minnet.

Så när den första besökaren kommer till din sida så kommer man ladda in kompilerade filer in i minnet och instansiera dessa (typ skapa static klasser osv, om dessa inte är lazy loading).

Om dina filer inte är kompilerade, så kommer dessa först att kompileras och en kompilator kontroll av dina filer görs, det betyder att du här kan få ett kompilator fel och dina sidor kan inte köras, inte bra! Så kompilera alltid dina sidor först. (Dessutom så laddas de ju fortare)

Om nu ingen besöker din sida på en vis tid (default är 20 minuter) så kommer dina kompilerade filer att laddas ur minnet och på det viset återlämna minnesplats. Det betyder också att nästa gång en besökare kommer, så måste filerna återigen laddas in i minnet, vilket tar längre tid än om en ny besökare hade kommit inom dessa 20 minuter, eftersom då filerna hade funnits inladdade i minnet.

- Magnus

Medlem sedan juni 20011 732 inlägg
#12

pellesvenne skrev:

Så här ser min AssemblyInfo.vb ut!
ska man ändra nått?

Imports System.Reflection
Imports System.Runtime.InteropServices

<Assembly: AssemblyTitle("")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("")>
<Assembly: AssemblyCopyright("")>
<Assembly: AssemblyTrademark("")>
<Assembly: CLSCompliant(True)>

<Assembly: Guid("AB4546E2-86D2-4E0F-8EBC-8CD85CE17C34")>

<Assembly: AssemblyVersion("1.0.*")>

Om du högerklickar på en dll och väljer "properties" och sedan "summary" (eller motsvarande på svenska) så fylls dessa fält från det du skriver här i din assemblyinfo. Är du en hemmasnickrare så behöver du knappast bry dig om detta men om du säljer en produkt så är det inte helt fel att använda sig av dessa fält för att beskriva en assembly.

AssemblyVersion är inte så dumt att använda. I ditt exempel så anges version 1.0 av dig manuellt (major och minor version) medan siffran efter den andra punkten kommer att räknas upp av systemet varje gång du kompilerar. Versionen kan du exempelvis hämta och skriva ut i din applikation. När du dokumenterar ditt projekt så är det viktigt att använda sig av versionhantering för att veta vilken assemblyversion som innehåller vilka uppdateringar.

Medlem sedan jan. 2002227 inlägg
#13

hur kopplar jag in resource filer i min assembly?
får ut när jag skapar två filer och döper dem till "sprak.en.resx","sprak.sv.resx" när jag skapar med namnet "se" så kommer de ingen se mapp i bin katalogen!

Could not find any resources appropriate for the specified culture (or the neutral culture) on disk

Medlem sedan jan. 2002227 inlägg
#14

så ser min manifest ut i filen sprak.en.resx:

.assembly projekt.resources
{
.hash algorithm 0x00008004
.ver 1:0:1572:27732
.locale = (65 00 6E 00 00 00 ) // e.n...
}
.mresource public projekt.sprak.en.resources
{
}
.module projekt.resources.dll
// MVID: {001D4BD1-156F-4127-98D9-F09B829C2AE3}
.imagebase 0x00400000
.subsystem 0x00000003
.file alignment 512
.corflags 0x00000001
// Image base: 0x038e0000

141 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)