DLL benutzen: Muß ein weiterer WIN $Path gelegt werden?



  • Hallo Forum,

    ich möchte ein .net Addon ausprobieren. Der Anbieter liefert 2 DLL's und ein paar C# Beispielprojekte wie man das Addon anspricht. Wenn ich das Projekt öffne werden mir die Verweise auf die DLLs mit einem Ausrufezeichen markiert. Ich habe die beiden DLLs danach mit RegAsm registriert und das VS neu gestartet. Die Ausrufezeichen bleiben.

    Wenn ich die absoluten Pfade in die .csproj eintrage, dann werden die DLLs gefunden. Muß ich jetzt extra in die Windows $Path Variable einen Pfad zu diesen beiden DLLs legen, damit sie gefunden werden? Ich dachte RegAsm würde das in die Registry bereits eingetragen haben und das VS würde über die Win Registry an den Standort der DLLs kommen?

    Vielen Dank

    Peter



  • Hallo

    Schau dir mal direkt die Projekt-Datei an (Entlade das Projekte, dann Rechtsklick aufs Projekt und "Bearbeite ..." anwählen), damit siehst du wo genau er die DLLs sucht. (Relative Pfade sind im Visual Studio auch möglich)

    RegAsm registriert zwar die DLLs als COM-Komponenten, dass ist korrekt. Es scheint aber das in deinem Projekt, nicht die COM-Komponenten sondern die DLLs direkt als Verweis eingetragen wurden (meine Vermutung), und dann braucht dein Projekt auch die DLLs am passenden Ort.

    Du könntest du die Verweise auch entfernen und direkt über COM hinzufügen, dann sollte er keine Verweise auf die DLLs mehr brauchen sondern holt sich alles COM.

    MfG Mdn



  • .NET Assemblies müssen entweder im GAC installiert sein oder im selben Verzeichnis wie die .EXE liegen. Über den PATH (wieso schreibst du da ein "$" vorn dran, das gibt's unter Windows nicht, wenn dann %PATH%) werden sie *nicht* gefunden.
    Und RegAsm ist zum Registrieren von COM Komponenten die in .NET DLLs implementiert sind, nicht zum installieren in den GAC.

    EDIT: Zum Installieren in den GAC würde man Gacutil.exe verwenden /EDIT

    BTW: es lassen sich nur DLLs mit sog. "strong name" (=Signatur) in den GAC isntallieren. Mit anderen Worten: kann sein dass es mit deinen DLLs geht, aber oft genug geht es nicht, weil viele darauf verzichten ihren DLLs "strong names" zu verpassen.

    Die üblichste Variante bei .NET ist wohl die DLLs einfach ins selbe Verzeichnis wie die .EXE zu kopieren.
    Visual Studio macht das beim Bauen auch automatisch sobald die DLLs referenziert sind und beim Bauen gefunden werden, muss man sich nicht drum kümmern.



  • Danke euch beiden für die Auskünfte. Dann lege ich die DLLs in einen Ordner wo sie gefunden werden.


Anmelden zum Antworten