c# - Anwendung startet nicht auf einem anderen computer
wenn ich versuche zu starten meiner c# - Anwendung auf einem anderen computer, als es entwickelt wurde, bekomme ich die folgende Fehlermeldung:
System.IO.FileLoadException: Konnte nicht geladen, Datei oder assembly 'Widgets3D, Version=1.0.3511.25568, Culture=neutral, PublicKeyToken=null" oder eine seiner Abhängigkeiten. Diese Anwendung konnte nicht gestartet werden, weil die Anwendungskonfiguration falsch ist. Neuinstallation der Anwendung könnte das problem beheben. (Ausnahme von HRESULT: 0x800736B1)
Datei-name: "Widgets3D, Version=1.0.3511.25568, Culture=neutral, PublicKeyToken=null' ---> System.- Laufzeit.InteropServices.COMException (0x800736B1): Diese Anwendung konnte nicht gestartet werden weil die Anwendungskonfiguration falsch ist. Neuinstallation der Anwendung könnte das problem beheben. (Ausnahme von HRESULT: 0x800736B1)
überprüfte ich mit dependency walker und process monitor, aber couldnt finden Sie alle fehlenden DLLs.
besonders die in der Fehlermeldung genannten Widgets3D.dll ist es!
beide PCs sind up-to-date mit den neuesten XP-service-pack und updates. die Anwendung funktioniert auf vielen PCs hier. es gibt nur diese eine, die macht das problem.
BEARBEITEN:
wie vorgeschlagen versuchte ich Sie regsvr32 der fehlenden dll, aber dass gibt mir diese Fehlermeldung:
LoadLibrary("./Widgets3D.dll") fehlgeschlagen - Diese Anwendung konnte nicht gestartet werden, weil die Anwendungskonfiguration falsch ist. Neuinstallation der Anwendung könnte das problem beheben.
Dank!
- Ich denke, dass die Widgets3D ist ein 3rd-party-Bibliothek/ - Komponente, die hängt von anderen dlls/Komponenten. Sie werden das setup für diese Komponente, glaube ich. Können Sie führen Sie das setup, und führen Sie Ihre app wieder?
- Nein, die Widgets3D ist meine eigene Bibliothek. aber das eine hängt von anderen thridparty-Bibliotheken. (die ogre3D-engine, um genau zu sein) alle dlls von ogre sind es im selben Verzeichnis.
- Sind Sie registriert
regsvr32
? - wenn ich versuche, diese zu registrieren bekomme ich diese Fehlermeldung: "OgreMain.dll wurde geladen, aber der DllRegisterServer-Eingangspunkt wurde nicht gefunden. Diese Datei kann nicht registriert werden."
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lesen, die Ausnahme, hier ist der wichtige Teil:
Nicht ein .Net-assembly. Es ist eine COM-dll muss registriert werden.
Macht die widgets3d installiert werden müssen? Versuchen Regsvr32 über es auf der anderen Maschine.
Nur öffnen Sie ein Befehlsfenster und führen:
und versuchen Sie es erneut.
Du bist load library Fehler scheint zu zeigen, dass andere zugehörige dll-Dateien erforderlich, die von der 3d-Bibliothek sind möglicherweise nicht registriert auf der Ziel-Maschine. Versuchen Sie das Installationsprogramm ausführen, für die der 3d-Bibliothek auf dem Computer.
Überprüfen Sie auch dieser Beitrag
Es gibt keine Notwendigkeit, dies zu tun. Gehen Sie einfach auf
Start -> Run -> regsvr32 <path of Widgets3D.dll>\Widgets3D.dll -> Press Enter
.Getan!
Widgets3D.dll kommt wohl auf die C++ - Laufzeit-Bibliotheken. Schnappen Sie sich die entsprechenden "Visual C++ Redistributable" für den compiler, es wurde gebaut und ausgeführt, dass auf dem Zielsystem. Sie können nicht heruntergeladen werden debug-DLLs von Microsoft, so dass hoffentlich es wurde in einer release-Konfiguration.
Aaah, DLL-Hölle, vermute ich. Es kann nützlich sein, zu versuchen, um die Registrierung und registrieren Sie es erneut. Wenn es hat vor kurzem bewegt wurde seit dem letzten mal, es muss verlegt werden zuerst aufgehoben werden, bevor er wieder angemeldet. Ich habe erlebt, viel mit COM-dlls.
Hoffe, das hilft.
nur für den Fall Sie interessiert sind. wir haben die Lösung gefunden für das problem zu sein, letzten
Sicherheits-patch für VC KB971090
deinstallation dieses Patches und den Wiederaufbau der DLLs das Problem gelöst.
es gibt durchaus ein paar Themen auf dieser:
https://stackoverflow.com/search?q=KB971090
Deinstallation ist eine Art des Umgangs mit dem problem, aber wenn Sie eine ATL-Komponente, die ist anfällig, Sie definitiv möchten, dass der Sicherheits-patch und nehmen Sie die erforderlichen änderungen an Ihrer app zu nutzen, die security-fixes.
Die Art, wie ich behandelt, ist dies eine Ausweichlösung entwickeln, die erlaubt, dass der patch installiert werden, aber immer noch Ziel-die alten Versionen der DLLs, die beim Bau. Ich habe beschrieben, diese Lösung hier.