Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
.Net 5, wie COM-DLL bereitstellen?
tempUser1
myCSharp.de - Member



Dabei seit:
Beiträge: 4

Themenstarter:

.Net 5, wie COM-DLL bereitstellen?

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von tempUser1 am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16098

beantworten | zitieren | melden

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.
Zitat
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.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
tempUser1
myCSharp.de - Member



Dabei seit:
Beiträge: 4

Themenstarter:

beantworten | zitieren | melden

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)
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16098

beantworten | zitieren | melden

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
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
tempUser1
myCSharp.de - Member



Dabei seit:
Beiträge: 4

Themenstarter:

beantworten | zitieren | melden

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"
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16098

beantworten | zitieren | melden

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

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
tempUser1
myCSharp.de - Member



Dabei seit:
Beiträge: 4

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16098

beantworten | zitieren | melden

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

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers