Problem bei Weitergabe einer Komponente!



  • Also habe bei mir in der Weiterbildung eine Komponente zusammengeschraubt
    die alle Instanzen von MS SQL Servern sucht und auflistet damit man den
    Connectionstring dynamisieren kann!
    Dort in der Weiterbildung nutze ich das höchste der Gefühle Enterprise Architect.
    Ich muss nichts weiter sagen auf meiner Maschine läuft alles habe die Komponente
    bei mir getestet und auf meinem Rechner tuts.

    So nun das Verhalten wenn ich die Komponente auf anderen Rechnern mit .NET Standard
    bzw. Enterprise Architect ausprobieren will!
    Ich kann die Komponente auf den anderen Rechnern auch schön in die Leiste der anderen Komponenten aufnehmen. Die Komponente wird auch zur Entwurfszeit und zur Laufzeit in der Anwendung auf den anderen Rechnern korrekt angezeigt.
    Doch wenn ich den Button klicke der den Serversuchvorgang anstösst bekomme ich eine Fehlermeldung durch eine MessageBox das irgendetwas nicht registriert ist!
    Die MessageBox kommt weil ich nathürlich innerhalb der Komponente einen Try/Catch - Block gebaut habe der eventuelle Exceptions abfängt.

    Die Fehlermeldung lautet wiefolgt:

    Das COM-Objektmit der CLSID {...bla...} ist ungültig oder wurde nicht registriert

    Die Komponente besteht wiederum ja nur aus einer Datei namens:

    MSSglServerListbox.dll
    welche wiederum auf folgende DLL angewiesen ist: Interop.SQLDMO.dll

    bisher bin ich in punkto manueller Registrierung mit fogenden Tools
    regasm.exe
    gacutil.exe

    auf die Datei MSSglServerListbox.dll losgegangen aber ohne Erfolg.

    Wie gesagt auf den Testrechner bekomme ich die Komponente schön in die Komponentenleiste der .NET IDE's eingebaut. Wenn man per Drag und Drop die Komponente auf seine Form zieht, werden auch die Verweise auf die DLL's im Projekt automatisch gemacht.

    Komponente wird zur Laufzeit auch angezeigt. Doch klickt man auf den Button der zur Komponente gehört kommt wieder die Fehlermeldung nach einem kurzen Augenblick:

    Das COM-Objektmit der CLSID {...bla...} ist ungültig oder wurde nicht registriert

    Auf meinem Rechner wo ich die Komponente entwickelt habe und wo auch der SQL Server läuft gehts , auf den Testrechner auf Arbeit läuft SQL - Server
    auch aber trotzdem dann kommt die Fehlermeldung.
    Wie gesagt auf meinem Rechner funktioniert die Kommponente alle MS SQL Server
    die im Netz laufen werden von der Komponente gefunden und korrekt angezeigt.

    Was muss ich noch registrieren und wie mache ich das auf den anderen Rechnern?

    mfg sclearscreen 😞



  • Wie die Fehlermeldung schon sagt, fehlt dir nen Com Objekt oder ist halt fehlerhaft registriert. Ich tippe auf SQLDMO.dll weil du dazu ja nen Interop Assembly hast. Kannst in der Registry unter der CLSID auch direkt gucken welche Komponente das ist. Normal müsste die eigentlich aber installiert sein bei laufenden Server.



  • Also wie gesagt den MS SQL Server
    habe ich bei mir daheim nicht laufen, habe aber daheim nur
    MSSQLServerListbox.dll registriert.

    Wenn ich Dich richtig verstanden habe müsssen bei WeitergabeKomponenten
    alle DLL's auf den jeweiligen Rechner vorhanden sein.
    Sowie es muss dort jeweils jede DLL die zur Componente gehört registriert werden!

    Wenn ein SQL Server installiert ist müsste also die Interop.SQLDMO.dll
    schon automatisch registriert sein.

    Gib mir bitte nochmals Rückantwort.

    danke und beste Grüsse von sclearscreen 🙂



  • Es ist auch nicht die Interop.SQLDMO.dll die Probleme macht, sonder die eigentliche SQLDMO.dll! Die Interop Assembly ist ja .Net Code-und muss gar nicht registriert werden. Das du den SQL Server gar nicht am laufen hast zuhause hab ich im ersten Post nicht so rausgelesen. Die SQLDMO.dll wird ja aber mit dem SQL Server installiert. Dann ist doch klar warums da zu nem Fehler kommt. Die fehlt halt. Du hast dir halt mit Benutzung der Com Komponente des SQL Servers ne Abhängigkeit vom Server reingebaut. Den wirst du jetzt immer brauchen wo deine Komponente verwendet wird.


Anmelden zum Antworten