AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Aufruf von .net Core 3.1 Assemblies

Ein Thema von Sergej_Molotov · begonnen am 31. Jan 2020 · letzter Beitrag vom 16. Feb 2022
Antwort Antwort
Sergej_Molotov

Registriert seit: 18. Jul 2006
61 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Aufruf von .net Core 3.1 Assemblies

  Alt 31. Jan 2020, 09:58
ja, die beiden Links habe ich gesehen und auch gelesen.

Bisher haben wir bei uns ein .Net Framework 4.6.x Assemblies im Einsatz, die wir Side-By-Side ausliefern. TLB's können generiert und wunderbar in Delphi verwendet werden.

Code:
mt -managedassemblyname:"MyCSharpAssembly.dll" -nodependency -out:"MyCSharpAssembly.manifest"
tlbexp "MyCSharpAssembly.dll" /out:"MyCSharpAssembly.tlb"
tlibimp.exe -P "MyCSharpAssembly.tlb" -D"blub"
Da ja das Framework nicht mehr großartig weiter entwickelt wird (siehe https://www.microsoft.com/de-de/tech...sst-net-5.aspx) wollte ich mal schauen, ob man ohne fremde Frameworks (hydra und co) unsere Projekte nach .NET-Core portieren kann.

Wie gesagt, wenn jemand sonst von euch ein Beispiel hat oder kennt, wäre ich dankbar. Vielleicht habe ich ja auch nur ein dummen Fehler gemacht.

Zitat:
Die Lösungen sollten eigentlich auch mit der Core-Variante funktionieren
Ich bin mir da nicht so ganz sicher, dass der Core mit dem Framework gleichzusetzen ist. Die Com-Unterstützung ist auch erst seit 3.0 enthalten.

Zitat:
Anders als im .NET Framework wird in .NET Core die Erstellung einer COM-Typbibliothek (TLB) aus einer .NET Core-Assembly nicht unterstützt. Die Anweisung besagt, dass Sie manuell eine IDL-Datei oder einen C++ Header für die nativen Deklarationen Ihrer Schnittstellen schreiben müssen.
Thomas
  Mit Zitat antworten Zitat
4dk2

Registriert seit: 4. Sep 2007
176 Beiträge
 
#2

AW: Aufruf von .net Core 3.1 Assemblies

  Alt 31. Jan 2020, 10:19
Also bei mir klappt es auch nicht,
habs mal mit dem Beispiel von ms probiert.
in der Registry ist die Dll vorhanden, auch mit meiner verwendeten GUID, aber bei delphi sagt er mir Exception:"Klasse nicht registriert"


Delphi-Quellcode:
uses
  System.SysUtils,
  ActiveX,
  System.Win.Comobj;

var s:string;
var guid:TGUID;

begin
  try
    s:='{05799DB1-3A1F-4D9A-82EF-2B06FBF774CF}';
    guid:=TGUID.Create(s);


    OleInitialize(nil);
// CoInitialize();
    CreateComObject(guid);
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

und ich denke mal du hast die richtige dll regstriert oder?
es werden zwei erstellt:

Projekname.dll (.netcore)
Projekname.comhost.dll (comserver loader, enthält CoRegisterServer usw)

Projekname.comhost.dll muss mit regsrv registiert werden, aber vermute mal, das du das so gemacht hast
  Mit Zitat antworten Zitat
Sergej_Molotov

Registriert seit: 18. Jul 2006
61 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Aufruf von .net Core 3.1 Assemblies

  Alt 31. Jan 2020, 10:22
Yepp, habe die Projekname.comhost.dll registriert.
Thomas
  Mit Zitat antworten Zitat
4dk2

Registriert seit: 4. Sep 2007
176 Beiträge
 
#4

AW: Aufruf von .net Core 3.1 Assemblies

  Alt 31. Jan 2020, 10:28
Und der Kontrollversuch bei mir mit ner .NetCore als Client zur Com funktioniert.
ABER, wenn ich meinen .netCoreClient auf x86 erstelle, klappts net mehr!
ich glaub daher weht der wind auch bei Delphi!

FEHLER .netCore:
System.Runtime.InteropServices.COMException: "Retrieving the COM class factory for component with CLSID {05799DB1-3A1F-4D9A-82EF-2B06FBF774CF} failed due to the following error:
80040154 Klasse nicht registriert (0x80040154 (REGDB_E_CLASSNOTREG))."

Klingt ja so wie bei Delphi!
  Mit Zitat antworten Zitat
4dk2

Registriert seit: 4. Sep 2007
176 Beiträge
 
#5

AW: Aufruf von .net Core 3.1 Assemblies

  Alt 31. Jan 2020, 10:31
Jap, die ComAssembly mit ziel x86 erstellen, und wichtig neu registrieren danach!
Danach läuft es in Delphi bei mir. (zumindest das CreateComObject(guid) XD)
  Mit Zitat antworten Zitat
Sergej_Molotov

Registriert seit: 18. Jul 2006
61 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Aufruf von .net Core 3.1 Assemblies

  Alt 31. Jan 2020, 10:37
Der Hinweis mit x86 in C# hat auch bei mir geholfen. Jetzt versuche ich gerade eine Funktion meiner erzeugten Klasse aufzurufen, aber das geht noch nicht. Versuche es aber weiter...

Variante referenziert kein Automatisierungsobjekt
Thomas

Geändert von Sergej_Molotov (31. Jan 2020 um 10:43 Uhr)
  Mit Zitat antworten Zitat
Sergej_Molotov

Registriert seit: 18. Jul 2006
61 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Aufruf von .net Core 3.1 Assemblies

  Alt 31. Jan 2020, 12:16
Der Aufruf der Funktion geling jetzt auch. Ich habe über "Komponente --> Komponente importieren --> .Net-Assembly importieren" die OHNE comhost.dll importiert und konnte dann die Funktionen aufrufen.

Danke 4dk2 und allen anderen
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz