Com-Objekt im .net7-Projekt funktioniert nach der Konvertierung in .net8 nichtC#

Ein Treffpunkt für C#-Programmierer
Guest
 Com-Objekt im .net7-Projekt funktioniert nach der Konvertierung in .net8 nicht

Post by Guest »

Ich habe ein einfaches .net7-Konsolenprojekt, das auf eine COM-DLL verweist.

Der in .net7 ausgeführte Code bricht nach der Konvertierung in .net8
COM ab Das Objekt wurde erfolgreich erstellt.

Marshal.IsComObject gibt „true“ für seine Instanz zurück.

Der Versuch, auf eine Eigenschaft zuzugreifen, löst jedoch eine AccessViolationException aus.
Es wurde versucht, oder zu lesen schreibgeschützter Speicher. Dies ist oft ein Hinweis darauf, dass anderer Speicher beschädigt ist.
Das Plattformziel des Projekts ist x86.

STAThread wird angewendet.

Das Problem besteht auch dann weiterhin, wenn EmbedInteropTypes wahr oder falsch ist.
Was kann das Problem verursachen?

Jede Hilfe wäre dankbar.
Bearbeiten:
COM dll wird mit regsvr32 registriert.
Der Code sieht wie folgt aus:
var obj = new InteropClass();
Console.WriteLine(obj.SomeProperty);//throws AccessViolationException

Wenn das Plattformziel x64 oder AnyCpu ist, wird eine ComException ausgelöst (80040154 Klasse nicht registriert)
Diese COM-DLL stammt von Software von Drittanbietern und ist Funktioniert wie erwartet in .net7 und früher.

Der Wechsel zu .net8 verursacht die Ausnahme.
Andere COM-Objekte funktionieren nach dem Upgrade hervorragend und ich frage mich, ob es welche gibt Einstellung, um dieses Problem zu lösen Problem.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post