Laden...

"Die Assembly xyz, auf die verwiesen wird, hat keinen starken Namen"

Erstellt von WhiteGloves vor 12 Jahren Letzter Beitrag vor 12 Jahren 7.249 Views
W
WhiteGloves Themenstarter:in
109 Beiträge seit 2009
vor 12 Jahren
"Die Assembly xyz, auf die verwiesen wird, hat keinen starken Namen"

Guten Morgen zusammen,

Wie der Titel schon sagt, habe ich ein Problem mit starken Namen einer Assembly.

Aber erstmal kurz zu meiner Projektstruktur:

Ich habe eine WPF Anwendung (Client) welche einen Verweis auf eine von mir geschriebene Klassenbibliothek (Lib) enthält.

Ich möchte in meinem späteren Programmverzeichnis den Client gerne in ein anderes Verzeichnis als die Lib liegen haben, da die Lib von mehreren weiteren Anwendungen genutzt wird.

Also habe ich ihr einen starken Namen verpasst und sie in den GAC (Global Assembly Cache) kopiert.
Anschließend konnte ich den (kompilierten) Client starten, ohne dass die Lib im selben Verzeichnis liegen musste.

Nun habe ich in der Lib eine weitere Klassenbibliothek (ExtLib) hinzugefügt. Beim Kompilieren des ganzen Projektes, speziell bei der Lib, erhalte ich jetzt die Fehlermeldung > Fehlermeldung:

Fehler beim Generieren der Assembly -- Die Assembly ExtLib, auf die verwiesen wird, hat keinen starken Namen.

Also habe ich der ExtLib auch einen starken Namen verpasst und Sie in den GAC kopiert. Aber die Fehlermeldung erscheint weiterhin.

Auf welche Datei muss ich innerhalb der Lib denn nun verweisen um die ExtLib hinzuzufügen?
Als Trick habe ich direkt auf die DLL innerhalb des GAC Verzeichnisses verwiesen - dies kann aber nicht der korrekte Weg sein.

Kann mir jemand sagen was ich falsch mache?

Vielen Dank

MfG
WhiteGloves

Hallo, ich heiße Hein Blöd und bin Softwareentwickler

1.552 Beiträge seit 2010
vor 12 Jahren

Hallo WhiteGloves,

habe ich auch immer alle paar Wochen wieder. Ein bereinigen aller Projekte bzw der Solution löste bisher immer das Problem.

Gruß
Michael

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

W
WhiteGloves Themenstarter:in
109 Beiträge seit 2009
vor 12 Jahren

Also bei mir hat das Bereinigen und Neuerstellen leider nichts gebracht.

Mal eine Verständnisfrage nebenbei:
Wenn ich eine Assembly mit einem starken Namen versehe und diese in den GAC hinzufüge, müsste die dann in Visual Studio bei den Verweisen auftauchen? Oder muss ich diese DLL dann immer noch via Dateipfad hinzufügen?!

Hallo, ich heiße Hein Blöd und bin Softwareentwickler

G
538 Beiträge seit 2008
vor 12 Jahren

Wenn es deine eigene Assembly ist, kannst du ihr einen Starken Namen verpassen, indem du sie beim Kompilieren auch gleich Signierst - das kannst in den Projekteinstellungen setzen.
Dazu brauchst du eine Signatur, die du dir mit sn.exe erstellen kannst.

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

1.552 Beiträge seit 2010
vor 12 Jahren

Wenn ich eine Assembly mit einem starken Namen versehe und diese in den GAC hinzufüge, müsste die dann in Visual Studio bei den Verweisen auftauchen?

Nein muss sie nicht und macht sie auch nicht

Oder muss ich diese DLL dann immer noch via Dateipfad hinzufügen?!

Genau. Wie du siehst werden auch die .NET dll mit eindeutigen Pfad hinzugefügt. Beim Builden benötigt man diesen Pfad. Jedoch wird bei der Ausführung des Programms auf dem Client zuerst im GAC nach der DLL gesucht, falls das Flag "Copy local" auf false gesetzt wurde.

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp