Avatar billede lsskaarup Nybegynder
28. juli 2003 - 10:57 Der er 24 kommentarer og
1 løsning

kontrol af dll-filer, hvordan ?

Jeg er ved at lave en lille asp.net applikation. Mit problem er at når jeg builder den, smider den bare dll-filerne i mappen for projektet, hvordan kan jeg styre hvor applikationen smider dll-filer. Jeg vil faktisk gerne bare have dem i en resource-mappe.
Avatar billede guidmaster Nybegynder
28. juli 2003 - 11:15 #1
Undskyld jeg spørger, men hvor vil du ikke bare have dem til at ligge i bin mappen?
Avatar billede lsskaarup Nybegynder
28. juli 2003 - 11:19 #2
rent og skær for overblikkets skyld. Det er til et system som indeholder 10 applikationer. Hvis en af disse so ikke længere virker, skal man kigge i en fælles mappen, hvor alle dll-filerne ligger. Så skal man ikke til at rode rundt i en masse forskellige mapper. Men jeg leder og leder på nettet, men kan ikke finde noget som helst om hvordan man styrer placeringen af dll-filerne, men jeg synes det virker mærkeligt hvis man ikke kan det.
Avatar billede guidmaster Nybegynder
28. juli 2003 - 11:23 #3
Er det du leder efter ikke at du gerne vil have dine dll´er(assemblyes) til at ligge i GAC`en ? Tag evt. et kig på http://www.dotnetforum.dk/forum/showpost.aspx?PostID=883
Avatar billede lsskaarup Nybegynder
28. juli 2003 - 11:29 #4
nu ved jeg ikke lige hvad GAC'en er. System fungerer godt nok nu, ingen problemer der, men jeg kunne bare godt tænke mig at få samlet alle dll'erne i en mappe, i stedet for i en masse forskellige mapper. Kan GAC'en gøre det ?
Avatar billede guidmaster Nybegynder
28. juli 2003 - 11:47 #5
Det er lige hvad den kan :)
Du skal dog lige være opmærksom på at alle .NET applikationer kan til gå de assemblyes der ligger i GAC´en.
Det vil nok være en rigtig god idé at læse op på hvad GAC´en er da det er en meget vigtig del af .NET frameworket.
Læs evt. denne artikel http://www.microsoft.com/danmark/msdn/dothenrik/article.asp?184001 hvor der er en udemærket forklaring på hvad GAC´en er.
Avatar billede lsskaarup Nybegynder
28. juli 2003 - 11:53 #6
Jeg har nu kigget lidt på dit forrige link, og jeg synes det er lidt omstændigt, men kigger lige på dit seneste. Dog synes jeg det er mærkeligt, hvis man ikke kan specificere hvor dll-filerne skal ligges når man "builder". Et eller andet sted må der være en defination som siger at dll'erne skal ligge i bin-mappen. Denne skulle man der gerne kunne ændre med en gang kode.
Avatar billede lsskaarup Nybegynder
28. juli 2003 - 12:59 #7
Jeg har nu forsøgt at bruge gac'en uden held, men jeg tror heller ikke jeg helt forstår det.

Jeg kan se at den primært er lavet til at flere applikationer kan bruge de samme dll-filer. Derfor må den jo også kunne lægge dem et fælles sted, hvilket er det som jeg skal brug. Men jeg forstår ikke hvordan jeg skal få det til at virke.
Avatar billede guidmaster Nybegynder
28. juli 2003 - 13:06 #8
Jeg er også overbevist om at det kan lade sig gøre - men jeg er ikke sikker på at det er noget du vil ud i.
Hvis du kender til reflection vil du vide at der er en mulighed for at loade assemblyes dynamisk eks. gennem metoden
Overloads Public Shared Function LoadFile( _
  ByVal path As String _
) As Assembly
Du skal dog lige være opmærksom på at dette kun kan lade sig gøre i 1.1.
Avatar billede lsskaarup Nybegynder
28. juli 2003 - 13:18 #9
faktisk kender jeg ikke en skid til .net, men hjælper en kammerat med dette system, og jeg er nu altså så stødt ind i dette problem.
Avatar billede lsskaarup Nybegynder
28. juli 2003 - 15:31 #10
Det kan da ikke passe, at man ikke kan bestemme for .dll-filerne bliver lagt. Nu har jeg snart brugt hele dagen op at lede efter en side som kunne forklare det, men ingen har jeg fundet. Eller er det bare fordi andre heller ikke her kunnet finde ud af det endnu.
Avatar billede guidmaster Nybegynder
28. juli 2003 - 17:05 #11
Okay. Lad os se på det. Helt konkret hvorfor er det så at du vil have dll´erne til at ligge et endet sted? Hvis de ligger i /bin er de beskyttet - dvs. at man som udefra kommende ikke kan hente dem fra IIS´en. Det er ikke muligt (uden at gå på kompromis med sikkerheden)at lægge dem uden for roden at dit website. Hvis du alligevel gerne vil have dem til at ligge uden for roden bliver du nød til at gøre det igennem reflection. En anden mulighed var at lægge dem ind i GAC´en.
Jeg kan dog stadig ikke helt se hvorfor du ikke vil have dem til at ligge hvor de ligger - hvis en applikation går ned eller ikke virker længere skal du jo ikke ind og kigge på dll´erne......så er det jo koden der er noget galt med. Hvis det er sådan at de forskellige applikationer gør brug af de samme dll´er er det eneste rigtige at lægge dem i GAC´en.
Er det i øvrigt en web applikation eller en winforms applikation vi snakker om ?
Avatar billede mads.rode Nybegynder
28. juli 2003 - 17:07 #12
Det kan du også...

Højreklik på dit projekt i Solution Explorer.
Tryk Properties.
Under Configuration Properties.
Tryk Build
Der er Output Path.

Du skal gøre det på alle dine projekter i hver solution.
Avatar billede lsskaarup Nybegynder
28. juli 2003 - 17:52 #13
mads.rode--> Jeg er hjemme nu, så kan ikke kigge på det for i morgen.

guidmaster--> Nu skal jeg se om jeg kan forklare det lige som min ven gjorde det for mig. Men først, det er en winforms applikation. Når systemet afvikles som det er nu, ligger der en masse dll-filer og roder rundt, nogle fra selve system i roden, og andre fra de små applikationer i deres respektive mapper.

Dette havde været smart nok, hvis det kun havde galt om en applikation, måske to, men 10 små og en stor? Selvfølgelig, hvis der går noget galt er det jo koden man skal se på, men det skal køre sådan at man bare kan tage en backup dll og kopier i over den som ikke virker længere. Derfor vil det være lettere for vedkommende som skal gøre dette, at de alle ikke i en fælles mappe, i stedet for 11 forskellige. Håber det løftede tåge noget mere ;)

Som sagt synes jeg ikke at kunne få GAC'en til at virke, derfor vil jeg gerne vide lidt om reflection, hvordan den virker og fungere. Man skal jo holde alle muligheder åbne indtil en virker ;)
Avatar billede lsskaarup Nybegynder
29. juli 2003 - 08:59 #14
mads.rode--> din løsning virker ikke, da den ændre output for alle filerne i projektet og ikke kun dll-filerne
Avatar billede lsskaarup Nybegynder
29. juli 2003 - 09:48 #15
guidmaster--> det er ikke sådan at du vil skære det helt ud i pap for mig, for jeg er godt nok helt rundt på gulvet lige nu. Det er pricipielt lige meget om det er med gac'en eller reflection. Det skal bare være en simpel form, uden meget indhold, men så jeg kan se hvordan det virker.
Avatar billede mads.rode Nybegynder
29. juli 2003 - 16:40 #16
De ekstra filer der kommer, er debug filer. Du skal slå den over i Release, så burde den kun lægge dll'erne der.
Avatar billede lsskaarup Nybegynder
29. juli 2003 - 19:26 #17
okay prøver lige på det
Avatar billede lsskaarup Nybegynder
30. juli 2003 - 08:33 #18
Det fjerne godt nok debugfilen, men exefilen ligger jo stadigvæk i mappen. Planen var at de også skulle være i hver sig mappen.
Avatar billede mads.rode Nybegynder
30. juli 2003 - 17:58 #19
Jeg har ikke lige så meget tid, men prøv at skrive "Solution Explorer" under Index i hjælp. Der er lidt forskellige ting som måske kan hjælpe.
Avatar billede lsskaarup Nybegynder
30. juli 2003 - 20:59 #20
Jeg prøver lige, men dropper det hvis der ikke er noget som kan hjælpe, idet system fungere fint nok uden.
Avatar billede bechmann Nybegynder
30. juli 2003 - 22:13 #21
.NET er designet således, at classloaderen kigger i assembly's i samme bibliotek som din exe-fil (for asp.net er det /bin). Hvis den ikke kan finde den klasse der skal instantieres i applikations-biblioteket kigger .NET i GAC'en (Global Assembly Cache). GAC'en kan du sammenligne med at registrere et COM-objekt i registry. Når du har registreret et assembly i GAC'en kan det som default bruges af alle applikationer på maskinen.
Hvis du ønsker en anden funktionalitet skal du lave et program, der hoster CLR (Common Language Runtime). Det er lidt bøvlet da dokumentationen godt kunne være bedre.
Avatar billede lsskaarup Nybegynder
31. juli 2003 - 22:19 #22
bechmann -->Det vil sige at man ikke udmiddelbart kan få dll-filer lagt i en fælles mappen. At skulle bruge GAC, eller decideret skal lave et program til håndteringen af dette.
Avatar billede lsskaarup Nybegynder
02. august 2003 - 11:58 #23
Jeg har nu kigget efter solution explorer, og ikke kunnet finde noget, men der står jo også rigtigt meget. Jeg har derfor besluttet at afvise jeres svar, men finder jeg på et senere tidspunkt ud af det, og løsningen svarer til noget en af jer skrev, vil jeg selvfølgelig oprette et spørgsmål, så vedkommende kan få sine point. Takker for jeres hjælp.
Avatar billede lsskaarup Nybegynder
06. august 2003 - 12:22 #24
Håber I vil svarer igen. Jeg er nu kommet lidt tættere på en løsning. Jeg har tilføjer en kode i AssemblyInfo, som henviser til min keyfile. Dette skulle være den eneste metode inde fra VS.NET til at tildele strong names til assemblies. Men det virker ikke på alle mine dll'er. Den ene siger at den ikke har et strong name, men VS.NET skal jo lave et strong name til den, som jeg har forstået det.

De 2 dll'er jeg har er AxInterop.ShockwaveFlashObjects.dll og Interop.ShockwaveFlashObjects.dll, og det er den sidste som problemet opstår ved. Jeg kan også se at AxInterop... her en Assembly Version, men den har Interop.. heller ikke, men hvordan jeg tildele sådan en til Interop... ?
Avatar billede lsskaarup Nybegynder
06. august 2003 - 12:29 #25
Ups, jeg retter lige. Det er AxIntero..., som jeg har problemer med
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
Kategori
Kurser inden for grundlæggende programmering

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