Laden...

.Net 5, wie COM-DLL bereitstellen?

Erstellt von tempUser1 vor 2 Jahren Letzter Beitrag vor 2 Jahren 521 Views
T
tempUser1 Themenstarter:in
4 Beiträge seit 2021
vor 2 Jahren
.Net 5, wie COM-DLL bereitstellen?

Hei,

ich habe mir die Tage mal mehr .net 5 angeschaut (komme hauptsächlich aus dem .net Framework Bereich).
Nun ist mir aufgefallen, dass die Bereitstellung einer COM-DLL gar nicht mehr so leicht ist, wie mit dem .net Framework. Dort war es ja hauptsächlich die ComVisible in dem Assembly auf true zu setzen und die dll dann über windows zu registrieren.

Wie ist das nun in .Net 5? Wie kann ich hier Klassen für zB. andere Tools bereitstellen? Also für .Net Projekte aber auch außerhalb des C# Bereiches.

Vielen Dank.

16.806 Beiträge seit 2008
vor 2 Jahren

Hi,

das ist eigentlich ausführlich dokumentiert; im Endeffekt wurde das ganze Thema COM deutlich einfacher und optimiert.
Verfügbarmachen von .NET Core-Komponenten in COM

Wenn es Dir um das Thema COM Bibliotheken also TLBs geht; das gibts in der neuen .NET Welt nicht mehr.

Also für .Net Projekte aber auch außerhalb des C# Bereiches.

Mir unklar, was Du damit meinst, weil .NET ist die Runtime und C# nur eine Sprache.
"Klassen" bereitstellen: kommt drauf an, was Du machen willst.

T
tempUser1 Themenstarter:in
4 Beiträge seit 2021
vor 2 Jahren

Moin,

danke erstmal für deine Antwort. Ich muss zugeben, ist bisschen schlecht beschrieben was ich meine.

Mein Vorhaben (welches in .net Framework 4.8 bereits gut lief):
Ich hatte eine dll, welche ich über COM erreichbar machen konnte.
Die darin enthaltenen Klassen und Funktionen wurden in anderen .Net Framework Projekten, aber auch in externen Tools genutzt.
In einem externen Tool werden zB. Events mit Vbs geschrieben und ich konnte so dennoch die Klassen aus meiner DLL nutzen. Optimal, da einheitlich und leicht zu pflegen.

DLL registrieren ging eben auch schon auf dem Server, allerdings kann ich mit VBs das Objekt nicht erstellen. (In VBs: createObject(namespace.classname)

16.806 Beiträge seit 2008
vor 2 Jahren

Und warum kannst Du das nicht erstellen? Vorgehen? Errors? Meldungen?

Solltest Du mit VBs "VBScript" meinen und dann in Office einsetzen wollen, so sei Dir der Hinweis nicht vorenthalten, dass Microsoft seit >10 Jahren aktiv wirbt, das nicht mehr zutun, sondern JavaScript zu verwenden.
JavaScript-API-Referenzdokumentation für Office - Office Add-ins

T
tempUser1 Themenstarter:in
4 Beiträge seit 2021
vor 2 Jahren

Registriert wurde die DLL hiermit:

C:\Windows\system32\regsvr32.exe "C:\\net5.0\NetComClass.comhost.dll"

und einmal hiermit

C:\Windows\SysWOW64\regsvr32.exe "C:\\net5.0\NetComClass.comhost.dll"

Fehler beim Aufruf:
ActiveX-Komponente kann kein Objekt erstellen:"NetComClass.Server"

16.806 Beiträge seit 2008
vor 2 Jahren

COM funktioniert mit .NET Core und .NET5+, aber Active X IIRC nicht. Active X ist tot.
Daher auch mein Hinweis im letzten Beitrag.

T
tempUser1 Themenstarter:in
4 Beiträge seit 2021
vor 2 Jahren

Habe das Problem behoben.
Habe das Projekt nochmal mit "dotnet publish -r win-x86 -c Release" erstellt und diese dann registriert.

So konnte ich es dann ausführen.
Problem lag denke daran, dass das externe Tool nur mit 32bit arbeiten kann.

16.806 Beiträge seit 2008
vor 2 Jahren

Deswegen gibts das Tool als x86 und x64 Variante; jeweils im passenden Unterordner.
Gleiches gilt auch für regasm.