Announcement

Collapse
No announcement yet.

Merkwürdiges Registierungsproblem bei einer .NET DLL

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Merkwürdiges Registierungsproblem bei einer .NET DLL

    Hi,

    Also ich habe folgendes Problem:

    Ich habe in VB.NET 2005 eine Bibliothek erstellt, welche im Excel 2003 (SP2) eingebunden werden soll. Hatte alles wunderbar funktioniert. Nun musste ich allerdings meinen Rechner neu installieren wegen einer Hardwaraufrüstung.

    Ich hatte zu dem Zeitpunkt wo es funktionierte die Bibliothek ohne Com-Interop kompiliert. Hatte sie dann nachträglich mit gacutil -i XXX.dll im GAC registriert (habe also StrongName) und mit Regasm XXX.dll /tlb: XXX.tlb /codebase die zugehörige Type Library erstellt. Hatte im Excel auch keine Probleme mit den .Net Objekten.

    So und nachdem ich meinen Rechner neu aufgesetzt und obige Schritte wiederholt habe kommt nun immer die Fehlermeldung "Datei- oder Assemblyname XXX oder eine Abhänigkeit davon wurde nicht gefunden. Als ob kein Verweis zu dem Assembly gesetzt wäre. Ist er aber aber (Tlb wird als Verweis gefunden und die DLL ist im GAC registriert).? Das merkwürdige darin ist nun, das es in Excel zu dieser Fehlermeldung kommt, allerdings die Bilbiothek im ACCESS 2003 (SP2) nach wie vor einwandfrei funktioniert. Ich weis leider nicht mehr was ich übersehen haben könnte.


    Hoffe ich hab mich verständlich ausgedrückt. Ich hab auch schon die Forenhilfe befragt, allerdings ohne Ergebnis.

    Vielen Dank für eventuelle Vorschläge.
    Grüße der Martin

  • #2
    Hallo,

    wenn in Excel der VBA-Editor (VBAProject) aufgerufen wird, kann dort die COM Interop-Klassenbibliothek über den Dialog Verweise - VBAProject ausgewählt und eingebunden werden?

    Comment


    • #3
      Hi,

      ja die Bibliothek ist dort sichtbar. Er erkennt die Type Library genau in dem Verzeichnis wo sie erstellt wurde. Der Editor zeigt mir sogar schon die Eigenschaften und Methoden der Klasse an. Erst durch den Set object = New NetKlasse fliegt er raus. Habs auch schon mit CreateObject(...) probiert, selbes Ergebnis. Bin echt am Verzeifeln

      PS: Vlt noch wichtig ich arbeite mit Windows XP SP2 alle Update installiert, wenn man dem automatischen Update glauben darf. Allerdings, es ging auch vor den ganzen Updates nicht.

      grüße,
      Martin

      Comment


      • #4
        Hallo,

        wenn der VBA-Editor von Excel das Objekt anzeigt, ist schon einmal die Registrierung in Ordnung. Ich würde daher zum Anhaltspunkt der Fehlermeldung "Datei- oder Assemblyname XXX oder eine Abhänigkeit davon wurde nicht gefunden" zurückkehren, um die Suche von dort aus zu beginnen.

        Wenn das .NET Framework SDK-Tool Assembly Binding Log Viewer (fuslogvw.exe) auf die Lauer gelegt wird, ist dort ein Fehlerprotokoll-Eintrag sichtbar, wenn beim Aufruf aus Excel heraus die Fehlermeldung angezeigt wurde? Falls nicht, erscheint eine Anzeige, wenn im Konfigurationsdialog (Settings) die Checkbox Enable custom log path aktiviert und ein Verzeichnis für die Logdateien angegeben wird?

        Wenn der Assembly Binding Log Viewer das Fehlerprotokoll des fehlgeschlagenen CLR-Ladevorgangs der Assembly anzeigt, was steht da im Detail drin?

        Comment


        • #5
          Hi,

          man lernt nie aus. Nettes Tool. Also folgende Ausgabe kommt beim Start der Excelgeschichte:

          *** Assembly Binder Log Entry (2007-02-09 @ 17:49:16) ***

          The operation failed.
          Bind result: hr = 0x80131107. No description available.

          Assembly manager loaded from: C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\fusio n.dll
          Running under executable C:\Programme\Microsoft Office 2003\OFFICE11\EXCEL.EXE
          --- A detailed error log follows.

          === Pre-bind state information ===
          LOG: Where-ref bind. Location = C:/WINDOWS/assembly/GAC_MSIL/XXX/2.0.0.0__2487faaa96a307cd/XXX.dll
          LOG: Appbase = C:\Programme\Microsoft Office 2003\OFFICE11\
          LOG: Initial PrivatePath = NULL
          LOG: Dynamic Base = NULL
          LOG: Cache Base = NULL
          LOG: AppName = NULL
          Calling assembly : (Unknown).
          ===

          LOG: Processing DEVPATH.
          LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
          LOG: Attempting download of new URL file:///C:/WINDOWS/assembly/GAC_MSIL/XXX/2.0.0.0__2487faaa96a307cd/XXX.dll.
          LOG: Assembly download was successful. Attempting setup of file: C:\WINDOWS\assembly\GAC_MSIL\XXX\2.0.0.0__2487faaa 96a307cd\XXX.dll
          LOG: Entering run-from-source setup phase.
          ERR: Error extracting manifest import from file (hr = 0x80131107).
          ERR: Failed to complete setup of assembly (hr = 0x80131107). Probing terminated.

          Da hat der tatsächlich den falschen Assembly Manager genommen. Und das wiederum liegt vohl an einem Bug wenn man Bibliotheken in VS 2005 erstellt und in Office oder besser Excel einbinden will. Hier der Artikel: Artikel

          Darauf gekommen bin ich durch folgenden Artikel: Fail to load .NET 2.0 COM registered dll from Word with both .NET 1.1/2.0 installed

          Also nach dem ich den Patch installiert habe (dieser funktioniert allerdings nur mit installiertem VS, für den eigentlichen Betrieb ist folgender Artikel hilfreich:
          Artikel
          ) funktioniert alles wunderbar, auch der Assembly Bindungsprotokollant stimmt jetzt wieder.

          Vielen Dank für den nützlichen Tip mit dem Tool und einen großen Dank an Microsoft für diesen elenden Bug.

          grüße
          der Martin

          Comment


          • #6
            Hallo Martin,

            ich habe nun das Gleiche Problem wie Du. Habe mir gerade die Artikel die Du benannt hast durchgelesen. Bei mir führt das leider nicht zum Erfolg.

            Aber ich habe das richtig verstanden, dass wenn ich ein Office 2003 SP2 habe nur den KB907417 installieren muss?

            Dieser Patch war aber schon auf dem System. Leider kann man diesen ja auch nicht deinstallieren. Oder hast Du noch etwas anderes gemacht?

            Dank Dir für Deine Mühe

            Peli

            Comment

            Working...
            X