webForumDet fria alternativet

registrera dll

.NET

6 svar · 453 visningar · startad av trexter

Medlem sedan mars 20021 889 inlägg
Frågan#1

Jag har under ett bra tag använt en dll i wwwroot/bin i en viss mapp men när jag nu vill använda samma dll i en annan mapp fungerar ingenting längre.

Frågar på ett forum och får till svar att jag ska lägga dll:n i en bin-mapp som ska ligga i mappen där jag vill använda dll:n. Ok.

Därefter skulle den tydligen registreras på något sätt. Använder denna hemsidan:
http://www.informit.com/isapi/guide~dotnet/seq_id~92/guide/content.asp
Följde steg 1: regasm Server.dll /tlb:Netserver.tlb
och 2: gacutil /i simpleserver.dll

men får: file must be the name of the assembly + exe or dll.
Riktigt konstigt iom att jag skrivet "mydata.dll"

Någon som vet hur man fixar sådant här?
Sedan tycker jag att det verkar konstigt att man ska behöva hålla på med detta öht i .NET. Är det inte meningen att man ska slippa att böka med komponenter som ska installeras etc etc. :q

Medlem sedan juni 20022 599 inlägg
#2

Känns som om det finns två lösningar:

1. Kopiera DLL:en rent fysiskt så att den finns i båda applikationernas bin-mappar. Isåf fall behöver du inte göra mer. Nackdelen blir att samma DLL finns på mer än ett ställe i fall du måste kompilera om den.

2. Lägg den i GAC:en med gacutil (precis som du gör). Det enda du måste tänka på är att DLL:en isåf måste vara signerad:

http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B815808

regasm ska du inte blanda in öht (om du inte vill kunna använda DLL:en från icke-.NET-applikationer).

trexter skrev:

Sedan tycker jag att det verkar konstigt att man ska behöva hålla på med detta öht i .NET. Är det inte meningen att man ska slippa att böka med komponenter som ska installeras etc etc.

Nja .. Tanken är väl att alla versionsproblem ska att lösa. Inte att det ska vara mindre bökigt att lösa dem. Det kan tvärtom bli hur komplext som helst.

Medlem sedan mars 20021 889 inlägg
#3

Det är det som är så konstigt. Om jag förljer 1. så hittas inte klasserna i dll:n i mappen där jag lagt till dll:n i /bin. Har detta i web.config

<configuration>
        <system.web>
            <compilation defaultLanguage="c#" debug="true">
		<assemblies>
			<add assembly = "namn"/>
		</assemblies>
	</compilation>
...

och så importerar jag namespacet överst i default.aspx:
<%@ import Namespace="myData" %>
(använder inte cb-filer i detta fallet)

Medlem sedan juni 20022 599 inlägg
#4

Nu blir jag lite osäker när det inte är CB, men om vi antar att din assembly heter DinAssembly.dll och att det i den finns ett namespace som heter DittNamespace så borde det väl räcka med:

<%@ Import Namespace="DinAssembly.DittNamespace" %>

om DinAssembly.dll ligger i \bin?

Medlem sedan mars 20021 889 inlägg
#5

Då får jag: The type or namespace name...

jag tror bara att man ska ange namespacet i den taggen och inte i vilken dll det ligger. Frågan är om det inte är i web felet ligger?

Medlem sedan juni 20022 599 inlägg
#6

jag tror bara att man ska ange namespacet i den taggen och inte i vilken dll det ligger.

Är osäker. Undrar om man faktiskt inte kan det. Iaf om man utelämnar det i web.config.

Men om du skriver så här:

<%@ Assembly Name="DinAssembly.dll" %>
<%@ Import Namespace="DittNamespace" %>

och skippar sektionen i web.config?

Källa

Medlem sedan mars 20021 889 inlägg
#7

Jag bytta till cb och det fungerade men tack för länken, rätade ut en del frågetecken!

350 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
217 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)