Laden...

Zugriff auf Class Library im GAC?

Erstellt von Denis103 vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.299 Views
D
Denis103 Themenstarter:in
13 Beiträge seit 2008
vor 16 Jahren
Zugriff auf Class Library im GAC?

Hallo,

ich habe eine signierte Class Library erstellt, die ich in den GAC installiert habe.

Wie erhalte ich denn nun in einer anderen Anwenund Zugriff aus auf diese DLL? Ich dachte über "add refernce" aber da taucht meine "ClassLibrary.dll" nicht auf...

Wie geht das denn?

Gruß
Denis

915 Beiträge seit 2006
vor 16 Jahren

Hrm, evtl. hilft dir diese Seite weiter 🙂

Denke hast nur etwas vergessen, wie den description Parameter für die Awnendungsbeschreibung oder sowas.

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

F
10.010 Beiträge seit 2004
vor 16 Jahren

Nein.

Nur weil eine DLL im GAC ist, heisst es noch lange nicht, das sie auch von VS.NET
angezeigt wird.

http://www.codeproject.com/KB/dotnet/demystifygac.aspx

Da gibt es auch einen Abschnitt "Popular misconceptions"

D
Denis103 Themenstarter:in
13 Beiträge seit 2008
vor 16 Jahren

Danke für den Link! 🙂

Auf der Microsoft-Support-Seite steht ja, dass man noch einen Registry-Eintrag nach dem Schema setzen muss:

[HKEY_CURRENT_USER\SOFTWARE\Microsoft.NETFramework\AssemblyFolders\MyAssemblies]
@="C:\MyAssemblies"

Ich verstehe das Prinzip allerdings noch nicht so ganz. Ich habe in diesem Schlüssel den Wert zunächst auf "C:\Windows\assembly" gesetzt, sodass er mir alle meine Assemblys aus dem GAC im VS anzeigt. Das geht aber nicht. Ich habe Probiert den Ordner unter den Eigenen Dateien anzugeben, indem alle meine Projekte liegen. Das klappt auch nicht. Erst wenn ich den genauen Pfad zu "...\ProjectX\Bin\Debug" setze, zeigt er mir die Assembly im VS unter "Add Reference" an.

Das heißt, ich muss für jede Assembly den Pfad zum Debug-Ordner in der Registry hinzufügen, um sie in anderen Anwendungen einbinden zu können? Wenn dem so ist, dann kann ich ja auch gleich über den Browse-Tab unter "Add Reference" die DLL ansteuern und hinzufügen. Demnach ist doch es nichts anderes als ein Verweis, damit ich mich nicht durch die Ordnerstruktur hangeln muss.

Womit ich aber Verständnisprobleme habe ist die Sache, dass die DLL im Debugordner doch nicht die gleiche (abgesehen vom Inhalt) ist wie die GAC. Im GAC liegt doch eine signierte Kopie, oder?
Der Anwendung habe ich ja als Refernez die Assembly aus dem Debugordner hinzugefügt und nicht die aus dem GAC. Demzufolge arbeitet doch meine Anwendung mit der Assembly im Debugordner und nicht mit der aus dem GAC. Oder irre ich mich hier?

F
10.010 Beiträge seit 2004
vor 16 Jahren

Ja, für jede einzelne DLL, die Du fest in VS.NT in der auswahl haben willst,
musst du den eintrag in der Registry machen.

2.
NIEMALS EINE DLL AUS EINEM DEBUGVERZEICHNIS DORT EINTRAGEN.

3.
In den GAC und fest in VS.NET kommen nur fertige DLL's.

4.
Wozu willst Du das denn so machen? Meist gibt es einen besseren/schnelleren weg.

D
Denis103 Themenstarter:in
13 Beiträge seit 2008
vor 16 Jahren

Ich würde nur ungern die DLL im Debugordner angeben. Das hatte ich nur mal zum Test gemacht. Man könnte ja alle fertigen DLL´s in ein Verzeichnis XY packen und dann darauf die Verweise in der Registry anlegen.

Aber warum so umständlich...?

Wie bekomme ich denn die DLL aus dem GAC im VS.NT angezeigt?

D
Denis103 Themenstarter:in
13 Beiträge seit 2008
vor 16 Jahren

Kann mir niemand Verraten wie das geht? 🤔

Mein Ziel ist es wie gesagt, eine DLL zentral über den GAC anderen Anwendungen zur Verfügung zu stellen.

Vorgegangen bin ich so, dass ich die fertige signierte DLL per Drag´n´Drop in den Ordner "C:\Windows\Assembly" gezogen habe.
Und nun möchte ich diese DLL per Reference in anderen VS-Projekten einbinden können. Über Add Reference taucht aber diese DLL nicht in dem Fenster auf.
Daher habe ich wie oben Beschrieben, den Eintrag in der Registy mit dem Verweis auf den GAC gemacht, aber ohne Erfolg. Wie mache ich es denn richtig?