Probleme beim binden während der Laufzeit?

20/02/2008 - 04:51 von Ingo Manthey | Report spam
Hallo NG,

ich möchte mit Assembly.Load(AssemblyName aName) einen Assembly welcher sich
im GAC befindet wàhrend der Laufzeit laden.
Wenn ich bei AssemblyName nur den Namen und die Version setzte, dann wird
das Assembly nur gefunden, wenn es im Application.StartupPath liegt. Ich
möchte es aber aus dem GAC laden.

Nun denke ich das ich bei dem AssemblyName noch den PublicKey setzten muss.
Dieser Funktion ist aber der key in einem byte[] zu übergeben. Den Public
Key habe ich aber nur als String. Wie kann ich den umwandeln? Auch ist der
key der selbe, den die bindende dll hat.
Auch diesen Schlüssel könnte man übergeben. Aber wie kommt man an den ran???


Danke für jeden Hinweis und Tipp


Ingo
 

Lesen sie die antworten

#1 Frank Dzaebel
20/02/2008 - 08:36 | Warnen spam
Hallo Ingo,

ich möchte mit Assembly.Load(AssemblyName aName) einen Assembly welcher
sich im GAC befindet wàhrend der Laufzeit laden.
Wenn ich bei AssemblyName nur den Namen und die Version setzte, dann wird
das Assembly nur gefunden, wenn es im Application.StartupPath liegt. Ich
möchte es aber aus dem GAC laden.



Eben, die sollte dann auch nicht im StartupPath liegen.


[Assembly.Load]
Dieser Funktion ist aber der key in einem byte[] zu übergeben.



Nein, nicht unbedingt, man kann auch nur
einen Langform-Namen benutzen, was IMHO
am einfachsten ist.



Nun denke ich das ich bei dem AssemblyName noch den PublicKey setzten
muss.



Ja, aber als string. Du musst die Langform des Namens
(Assembly.FullName) nehmen.

Zum Beispiel folgendermassen schauen, welche Versionen
im GAC vorhanden sind und einfach kopieren:

gacutil /l System.ServiceProcess

Weitere Möglichkeiten:

[Gewusst wie: Bestimmen des vollqualifizierten Namens einer Assembly]
http://msdn2.microsoft.com/de-de/library/2exyydhb(VS.80).aspx


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen