tlb für .NET 5 DLL

  • C#

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von MasterQ.

    tlb für .NET 5 DLL

    Hallo,

    hat jemand Ahnung wie ich eine tlb-Datei aus einer .NET 5 DLL erzeuge?

    Im Netz finde ich einiges aber ich steige da nicht durch.

    1) Man kann eine IDL-Datei erstellen und daraus eine tlb compilieren. Das geht irgendwie mit C++
    2) Man nutzt das Tool tlbexp.exe. Das wirft mir den Fehler, System.Runtime würde fehlen. Die steht aber in den Verweisen drin.

    Wenn mir da jemand auf die Sprünge helfen könnte, wäre das sehr hilfreich.

    Zum Hintergrund: Ich muss in MSAccess eine .NET DLL einbinden und dafür brauche ich die entsprechende tlb. Ich hatte das schon mit .NET Framework, da wird die tlb automatisch mitkreiert. Da das .NET Framework aber abgekündigt wurde, muss ich auf .NET 5 umsteigen. Ich bitte aber drum, jetzt nicht den Sachverhalt zu diskutieren, dass ich eine DLL an MSAccess binden will.

    Gruß

    MQ
    Hi

    Mit .NET5 habe ich selber noch keine COM-DLL erstellt. Im groben würde ich mich an diese Anleitung halten: docs.microsoft.com/en-us/dotne…/expose-components-to-com

    Wenn ich mir das so durchlese, dann wird keine TLB mehr mit .NET Core erstellt. Ein C++ Headerfile wird Dir für Access nichts bringen. Da bleibt nur ein IDL-File erstellen das mit dem MIDL Compiler aus dem C++ SDK zu einer TLB konvertiert werden kann. Hab ich auch noch nicht gemacht.

    Evtl lässt sich ja aus der xyz.comhost.dll per tlbexp eine TLB generieren da ja diese DLL ganz normal per Regsvr32 registriert werden muss.

    Ich kenne mich mit Access-VBA nicht aus, dennoch sollte es auch in VBA möglich sein direkt die registrierten COM-Interfaces Deiner DLL, ohne TLB, zu verwenden. Du brauchst halt eine Beschreibung der COM-Interfaces. Ähnlich wie in den C++ Headerfiles für andere COM-Interfaces.
    Mfg -Franky-
    Den Microsoftartikel habe ich auch gelesen.

    Der geht aber davon aus, dass man mit IDL-Files auf Du-und-Du steht. Ich habe versucht, im Netz was drüber zu lesen. Bin aber nur bedingt schlauer als vorher.

    Bei tlpexe kommt bei mir eine Fehlermeldung (System.Runtime nicht gefunden). Kann daran liegen, dass die DLL kein Monolit ist und noch drei andere DLLs nachzieht. Runtime steht in allen Abhängigkeiten bzw. Verweisen aber drin.

    .Net 5 bzw. Core legt Wert auf Interoperabilität und tlb hat bei *nixes nichts zu suchen. Daher hat sich keiner drum gekümmert. Mit .Net 6 wird's vlt wieder besser. Das zum Thema Kompatibilität.

    Wenn ich nicht unter Zeitdruck stehen würde, wär's mir egal mit dem Umstieg auf .Net 5 und das könnte warten. Aber leider drängt's.