Ich habe in Visual Studio 2008 eine stark signierte Assembly mit dem .NET 3.5-Framework erstellt (ich habe auch 2.0 Framework ausprobiert). Ich habe eine Klasse als COM sichtbar gemacht, und ich bin in der Lage, diese DLL im Objektbrowser von Visual Studio 6 für Visual Basic zu finden. Ich kann eine Exe in VB6 erstellen und diese exe direkt aus Windows Explorer ausführen, und alles funktioniert gut. Allerdings, wenn ich versuche, das VB6-Projekt in Visual Studio 6 die .NET-Assembly will nicht laufen mit dem folgenden Fehler laden und fehlschlägt:Visual Studio 6 kann eine in .net 2.0 kompilierte COM-DLL nicht laden
ActiveX component can't create object
ich diesen Fehler auch oben statt des einen bekommen, je auf, wie ich die dll registrieren:
-2147024894 File or assembly name (myComponentName), or one of its dependencies, was not found.
Oder diese:
-2146233082 Automation error
ich alles versucht habe ich mir vorstellen kann. Es scheint, dass dies ein Problem mit der Art ist, wie VS6 im Debug-Modus läuft. Vielleicht ist die Umgebung anders mit einem fehlenden Pfad zu dieser oder einer anderen DLL. Ich habe dieses Problem auf zwei verschiedenen Entwicklungsmaschinen. Ich kann auch auf eine COM.NET-DLL verweisen, die von einem anderen Entwickler mit einer älteren Version von Visual Studio .NET erstellt wurde. Ich öffnete sogar die DLL mit Abhängigkeit Walker und ich habe keine offensichtlichen Fehler bekommen.
UPDATE: Proc Monitor sagt, dass VB6 für meinen dll sucht in dem VB6 Studio Home-Verzeichnis "C: \ Programme \ Microsoft Visual Studio \ VB98 \ MyDLL.DLL" statt, wo die DLL registriert ist . Ich legte dort die dll und registriert es, jetzt bin ich einen neuen Fehler bekommen:
-2146234105 (80131107) "The format of the file 'MyDllName' is invalid."
Also, warum ist Studio suche meine DLL da und nicht dort, wo es registriert? Wie kann ich das beheben? Am allerwenigsten, wie kann ich die dll bekommen in der Arbeit "C: \ Programme \ Microsoft Visual Studio \ VB98 \" Ordner
Schluss Update/LÖSUNG: Ok, also herausgefunden ich das Problem, . Dies hat damit zu tun, dass VB6.exe von der .NET-Framework-Version, die ich verwendete, ausgeschlossen wurde (2.0 oder 3.5). Ich fand diese Datei „C: \ Programme \ Microsoft Visual Studio \ VB98 \ vb6.exe.config“, die den folgenden Eintrag enthalten:
<configuration>
<startup>
<supportedRuntime version="v1.1.4322" />
</startup>
Sobald ich diese Datei die DLL entfernt zu arbeiten begann fein aus der Visual Studio 6-Umgebung. Danke an alle, die auf Hilfe geantwortet haben.
Meine Vermutung ist, dass etwas in Ihrem Betriebssystempfad gültig ist, das eine Ihrer verwalteten Referenz-DLLs lädt oder nicht. Wie ich an VS6 erinnere, ignoriert es die OS-Pfade, so dass Sie den Pfad zu VS6 hinzufügen müssen. – kenny
Überprüfen Sie einfach - Sie haben .NET 2.0 installiert auf der Box mit Visual Studio 6, ja? –
Ich habe Visual Studio 6, 2005 und 2008 installiert ... und 2005 oder 2008 .net 2.0 damit installiert. Die DLL läuft gut, wenn sie von einem anderen studio 2008-Projekt aufgerufen wird, oder wenn sie in der VB6-App verwendet wird, wenn sie von Windows-Shell (Explorer) aufgerufen wird. Nur VB6 IDE-Umgebung funktioniert nicht. – Alex