COM DLL erstellen (Einstiegspunkt definieren)

ok, womit registriere ich die dll?

hab verschiedene Sachen probiert:

- regasm --> Typen erfolgreich registriert
- regsvcs --> ...dll does not have a no strong Name
- regsvr32 --> DllRegisterServer entry point was not found

Ziel soll es ja sein, eine Dll zu erstellen, die von einer anderen Anwendung ansprochen werden kann (keine .Net Anwendung).

Wenn ich bei Visual Studio unter "Verweis hinzufügen" und dann unter "COM" gucke, soll die dll dann doch auftauchen, wenn sie erfolgreich registriert ist?
 
Mit dem RegSvc werden DotNet Dienste (wahrscheinlich Windowssystemdienste installiert). RegSvc

Ich hatte mit diesem Projekt rumgespielt VBActive allerdings wird in meinem Projekt auch kein Einstiegspunkt beim Registieren gefunden. Ich kann aber trotzdem Problemlos darauf zugreifen.
 
Zuletzt bearbeitet:
hab da letztens auch noch etwas anderes in diesem Zusammenhang gefunden.

csc.exe --> soll auch für die Registrierung bzw. Erstellung einer COM Dll anwendbar sein.

Hat da evtl. noch jemand einen Tipp?

Hab das zum Aufruf folgendes gefunden, aber irgendwie will das nicht richtig.

csc r:/pm_sql.dll t:library /out:test.dll Class1.cs
 
Die CSC.EXE ist der CSharp Compiler, dieser wandelt deinen Quellcode in die MSIL um.
Sicherlich hat der die Parameter für die Einbindung/Offenlegung der COM Interfaces die Verantwortung. Da Visual Studio ihn nur versteckt aufruft, um das Projekt zu kompilieren.
 
Zuletzt bearbeitet:
hab den Fehler in der Anweisung gefunden:

das muss

Code:
csc /r:pm_sql.dll /t:library /out:test.dll Class1.cs

heißen.

Nur so "nice to know".

Trotzdem komme ich an einer Stelle nicht weiter. Hab die dll auf einem System als COM Komponente registriert bekommen. (Weiß aber nicht mehr, wie ich das gemacht habe :rolleyes: ) Jedenfalls steht die dll in Visual Studio unter "COM" bei "Verweis hinzufügen" drin und auch mit anderen Programmen kann ich nun die dll nutzen.

Hat da evtl. noch jemand ne Idee? Hab nur mit csc und regsvcs und regasm rumgespielt und irgendwann war halt die dll als COM Komponente verfügbar.

Versuche ich das nun mit den Befehlen auf einem anderen System geht das nicht mehr.
 
mir ist noch etwas aufgefallen beim Testen bzw. ein weiteres Problem hat sich ergeben.

Habe es bis jetzt nicht geschafft auf einem 2. Rechner die dll so zu registrieren, dass sie als Com Komponente in VS zu sehen ist.

Nun habe ich das Projekt aber einmal auf dem Rechner in VS aufgerufen und kompiliert. Danach war die Komponente unter COM in VS zu finden.
So kann ich dann die Komponente auch in den anderen Anwendungen nutzen.

Einer Fehlermeldung kommt aber noch:

.... Das Umwandeln der Typbibliothek in eine .Net Assembly ist fehlgeschlagen.....

Auf den anderen Rechnern, wo die dll hauptsächlich eingesetzt werden soll ist aber VS nicht drauf. Nur das Framework.
Daher suche ich immernoch nach einer Lösung die dll über das Framework zu registrieren.

Vielleicht kann mir jemand anhand dieser Infos weiterhelfen?!
 
Nach dem Aufrufen in des Assemblyprojektes auf den zweiten Rechner wird es Visual Studio die Registrierung für dich vorgenommen haben.

Das Tool RegASM Tool liest die Metadaten in einer Assembly und fügt die erforderlichen Einträge der Registrierung hinzu. COM-Clients sind so in der Lage, transparent .NET Framework-Klassen zu erstellen. Sobald eine Klasse registriert ist, kann diese von jedem COM-Client wie eine COM-Klasse verwendet werden. Die Klasse wird nur einmal beim Installieren der Assembly registriert. COM kann keine Instanzen von Klassen in der Assembly erstellen, bevor diese nicht registriert wurden.

Mit dem RegASM Tool kann man auch eine Registrierungsdatei oder auch ein TLB Datei erzeugen.

Wenn du nur von DotNet Programmen die DLL aufrufen willst reicht es die Assembly einzubinden. COM ist nur notwendig, wenn du dein Assembly nicht DotNet fähigen Programmen(VB6, C++ 6 etc.) verwenden willst oder musst.
 
ok, aber wie registriere ich das mit regasm.exe richtig?

Hab das schon ausprobiert, hat aber nicht funktioniert.

Die dll soll aber vorrangig von Programmen genutzt werden, die nix mit .Net zu tun haben.

Somit muss die dll "richtig" registriert werden.

wie müssten dann die Parameter bei regasm.exe aussehen?
 
hab noch mal was anderes versucht, nämlich mit csc die dll auf dem Rechner ohne VS zu erstellen.

da bekomme ich folgenden Fehler:

...The type or namespace name 'Data' does not exist in the class or namespace 'System'....

kann das evtl. auch damit etwas zu tun haben, dass ihm da irgendwelche Resourcen fehlen?
 
Zurück