Installation .NET COM DLL

  • Sonstige

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von dekodi.

    Installation .NET COM DLL

    Hallo Forum,

    ich habe folgendes Problem.

    Ich habe in .NET (4er Framework) eine DLL erstellt und möchte diese gerne in Access einbinden.
    Auf meinem Entwciklungsrechner klappt das auch einwandfrei (als COM-Interop registrieren = True)
    Leider kann bekomme ich die DLL auf anderen Rechnern (ohne VS 2013) nicht zum Laufen.
    Um die DLL auf einem anderen Rechner zu installieren bin ich wie folgt vorgegangen:

    Entwicklungsrechner:
    Zunächst habe ich die DLL mit regasm registriert und mir mit /Regfile und /CodeBase ein entsprechendes
    Registry-File erzeugen lassen. Regasm habe ich dabei auf die fertig kompilierte DLL in bin/release angewendet.
    Anschließend habe ich die erzeugte Registry-Datei mit dem Editor nachbearbeitet und die CodeBase-Einträge so geändert,
    dass diese auf das zukünftige Installationsverzeichnis der DLL auf dem Zielrechner verweisen.

    Zielrechner:
    Verzeichnis für die DLL angelegt und die DLL hineinkopiert.
    Anschließend die Registry-Datei eingelesen (-> ohne Probleme).
    Dennoch wird die DLL in Access nicht als Verweis angezeigt.
    Wenn ich die DLL manuell hinzufügen möchte, erhalte ich den Fehler ''' Einstziegspunkt konnte nicht ermittelt werden ...."

    Habe jetzt mehrere Stunden damit zugebracht, die DLL zum Laufen zu bekommen, keine Ahnung woran das liegen könnte.
    Habe die DLL mit und ohne StrongName kompiliert - erfolglos.
    Neustart nach Registrierung durchgeführt - erfolglos
    Registry-Einträge kontrollier - GUIDs und Verzeichnisse sind alle OK und wurden korrekt aus der Registrierungsdatei eingelesen.
    Die DLL soll auch nicht in den GAC, sondern nur aus einem bestimmten Verzeichnis heraus aufgerufen werden.

    Kann mir jemand helfen?
    Office ist auch heute noch ein 32-Bit-Programm, wenn ich mich richtig entsinne. Daher müssen alle Interop-DLLs als x86 kompiliert sein. Regasm ist entweder 32- oder 64-bittig, je nach VS-Tool-Konsole. Verwende die 32-Bit-Konsole, um regasm auszuführen. Dann wird deine DLL im 32-Bit-Teil der Registry eingetragen (unter Wow6432Node). Nur wenn sie dort steht hat Access eine Chance, die DLL zu finden.
    Gruß
    hal2000

    hal2000 schrieb:

    Office ist auch heute noch ein 32-Bit-Programm
    Gibt's in beiden Varianten.
    Die meisten Unternehmen wählen jedoch die 32-Bit-Variante, weil COM-Aufrufe in VBA nicht kompatibel sind und modifiziert werden müssen.
    Da Office-Programme in der Regel nicht zentral gewartet werden, will man das Risiko nicht eingehen, dass "da draussen" evtl. wichtige Anwendungen nicht mehr gehen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --