.Net Programm Kompatibitlität

DrMueller

Erfahrenes Mitglied
Hallo Leute,
ich komme ja eigentlich aus der VB6 Sparte, aber ich "darf" auch .Net und .Net2 Probleme lösen.
Mein derzeitiges ist eigentlich recht trivial, aber ich komme trotzdem nicht drauf:
Mir wurde eigentlich mal gesagt, dass .Net2 Programme nicht mehr heikel sind mit Kompatibitlität etc. Ich habe bei einem Kunden ein altes Setup einer Schnittstelle draufgespitzt, welche jedoch nicht mehr kompatibel mit dem Hautprogramm war.
Also habe ich die Schnittstelle auf der aktuellen Version kompiliert und dort reinkopiert, leider erschien mir dauernd ein ComFactory Fehler :(
Leider kann ich zurzeit keine Setups machen hier, da anscheinend die Installshield-CD unbrauchbar geworden ist.
Daher wollte ich nachfragen, ob es einfach nru daran liegt, dass ich DLLs wild rumkopiere oder das gar keinen Fehler verursachen kann?

Vielen Dank im Vorraus und einen guten Start in die neue Woche.
 
Hi

Ich hab dein Problem nicht verstanden.
Hast du deinen alten VB6 Sourcen mit VS2002 oder neuer kompiliert?
Wenn ja, dann ist daraus eine .NET Assembly geworden, die mit VB6 nichts mehr zu tun hat.
Wenn du die Assembly und Klassen daraus über COM nutzen willst, musst du diese für COM sichtbar (ComVisible) machen und per regasm registrieren.
 
Du bist schon viel zu weit :) , wie gesagt ich bin kein Net2 Held
Also ich versuchs mal so aufzulisten:
-Hauptprogramm ist VB6
-Schnittstelle VB .Net2
-Ich installiere eine neue Schnittstelle, indem ich die EXE,Interops etc. rüberkopiere --> Fehler

Meine Frage ist ganz einfach: Kann dieser ComFactory-Fehler erscheinen weil ich die Daten nur rüberkopiere und nicht mit einem Setup sauber installiere und registriere? Meine Frage bezieht sich daher, da ich einmal gehört habe, das solche Fehler mit .Net 2 eben nicht mehr auftreten können.
 
Hi

Zum einen wäre der genau Fehler mal hilfreich ;)
zu anderen:
Wie gesagt, die neue Assembly muss mit regasm für COM registriert werden. Die Klasse, die du über COM nutzt willst, müssen entsprechend dafür markiert werden werden.
COM kommt ohne Registrierung nicht aus. Microsoft hat mit .NET nicht alte Technologien geändert. Alternative: Hauptprogramm konvertieren und als VB.NET Anwendung kompilieren (kann aber Aufwand bedeuten).
 
Ich haue einfach mal rein, was da steht, ka welche Daten von Bedeutung sind:

Informationen über das Aufrufen von JIT-Debuggen
anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.

************** Ausnahmetext **************
System.Runtime.InteropServices.COMException (0x80040154): Die COM-Klassenfactory für die Komponente mit CLSID {0A89F75C-E133-11D2-B64C-006097CD42D7} konnte aufgrund des folgenden Fehlers nicht abgerufen werden: 80040154.
bei Dowar.HiSoft.Adress..ctor()
bei Dowar.HiSoft.Hauptformular.startImportVorgang()
bei Dowar.HiSoft.Hauptformular.cmdStart_Click(Object sender, EventArgs e)
bei System.Windows.Forms.Control.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
bei System.Windows.Forms.Button.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Geladene Assemblys **************
mscorlib
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.4016 (NetFxQFE.050727-4000).
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll.
----------------------------------------
dowHiSoft
Assembly-Version: 1.0.0.0.
Win32-Version: 1.0.0.0.
CodeBase: file:///C:/Program%20Files%20(x86)/Consolidate/testNewSetup/Dowar/dowHiSoft.exe.
----------------------------------------
dowHiSoftLib
Assembly-Version: 1.0.0.0.
Win32-Version: 1.0.0.0.
CodeBase: file:///C:/Program%20Files%20(x86)/Consolidate/testNewSetup/Dowar/dowHiSoftLib.DLL.
----------------------------------------
System.Windows.Forms
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.4016 (NetFxQFE.050727-4000).
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.
----------------------------------------
System
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.4016 (NetFxQFE.050727-4000).
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll.
----------------------------------------
System.Drawing
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.4016 (NetFxQFE.050727-4000).
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.
----------------------------------------
Microsoft.VisualBasic
Assembly-Version: 8.0.0.0.
Win32-Version: 8.0.50727.4016 (NetFxQFE.050727-4000).
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll.
----------------------------------------
dowNetCMF
Assembly-Version: 1.0.3544.18427.
Win32-Version: 1.0.3544.18427.
CodeBase: file:///C:/Program%20Files%20(x86)/Consolidate/testNewSetup/Dowar/dowNetCMF.DLL.
----------------------------------------
System.Xml
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.4016 (NetFxQFE.050727-4000).
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll.
----------------------------------------
dowConsNetObj
Assembly-Version: 1.0.3544.18412.
Win32-Version: 1.0.3544.18412.
CodeBase: file:///C:/Program%20Files%20(x86)/Consolidate/testNewSetup/Dowar/dowConsNetObj.DLL.
----------------------------------------
Interop.OCReplication
Assembly-Version: 26.24.0.0.
Win32-Version: 26.24.0.0.
CodeBase: file:///C:/Program%20Files%20(x86)/Consolidate/testNewSetup/Dowar/Interop.OCReplication.DLL.
----------------------------------------
Interop.OCDatabase
Assembly-Version: 25.21.0.0.
Win32-Version: 25.21.0.0.
CodeBase: file:///C:/Program%20Files%20(x86)/Consolidate/testNewSetup/Dowar/Interop.OCDatabase.DLL.
----------------------------------------
mscorlib.resources
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.4016 (NetFxQFE.050727-4000).
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll.
----------------------------------------
System.Windows.Forms.resources
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.4016 (NetFxQFE.050727-4000).
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.
----------------------------------------

Das Problem taucht beim Setten des OCReplication Objekts auf, aber dieses hat ja hier die gleiche Version¿


.
 
Vielleicht noch was Anderes:
Ich habs Testweise bei ihnen auf einem Client installiert da klappts, nur auf dem neuen Server, 64 Bit, klappts nicht.
Kann das Betriebssystem resp. die Bits ein Problem sein?
 
Du musst die Anwendung als x86 Anwendung kompilieren, wenn du COM nutzt.
.NET Anwendungen werden per Default mit der Option Any CPU kompiliert. Das Framework entscheidet dann zur Laufzeit ob es den breiteren Bus auf einem 64 Bit System nutzen kann. COM läuft nur im 32Bit Kontext. Daher, wie oben geschrieben. Umstellen auf x86 (zu finden in der Toolbar bzw. in den Projekteigenschaften)
 
Zurück