Fehlerbehebung: Es kann keine referenzierten unmanaged dll finden, wenn benutzerdefinierten Code über ein Word-Code-Behind-Aufruf

StackOverflow https://stackoverflow.com/questions/319964

Frage

Kontext:

  1. Ich habe einen WPF-App, die bestimmten nicht verwaltete DLLs in den D verwendet: \ WordAutomation \ MyApp_Source \ Executables \ MyApp-Ordner. Ich kann die exe Doppelklick auf und alles läuft.
  2. Als nächstes habe ich ein Word 2007 Code-Behind-Projekt, dass Referenzen relevanter verwalteten DLLs in dem obigen Ordner und versucht, das Gleiche zu tun .. bringt die App UI auf. Nach ausreichend ‚macheting‘, bekomme ich meine UI zu zeigen. Aber jetzt gibt es eine Benutzer-Aktion, die Belastung eines des nicht verwalteten DLLs zwingt, die konsistent mit einer FileNotFoundException explodiert (ohne Hilfe / Hinweis darauf, welche Datei fehlt)

ich einen Haltepunkt auf das Problem Linie platziert haben, gelöscht Ausgabefenster, drücken Sie F10, verglichen die Ausgabe, wenn ich diese Zeile ausgeführt (Hinzufügen eines Objekts zu einem ObservableCollection, dessen Collection Handler hat Code, der den nicht verwalteten Stück lädt nach oben)

Fall 1: auf EXE Doppelklick .. welche perfekt (leicht snipped) arbeitet

'MyApp.DesktopApp.exe': Loaded 'D:\WordAutomation\MyApp_Source\Executables\MyApp\ManagedFrameworkWrapper.dll', Symbols loaded.
'MyApp.DesktopApp.exe': Loaded 'D:\WordAutomation\MyApp_Source\Executables\MyApp\Unmanaged.Framework.dll'
'MyApp.DesktopApp.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456\msvcr90d.dll', Symbols loaded.
'MyApp.DesktopApp.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456\msvcp90d.dll', Symbols loaded.
'MyApp.DesktopApp.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugMFC_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_2a62a75b\mfc90ud.dll', Symbols loaded.
'MyApp.DesktopApp.exe': Loaded 'C:\WINDOWS\system32\msimg32.dll'
'MyApp.DesktopApp.exe': Loaded 'D:\WordAutomation\MyApp_Source\Executables\MyApp\HelperFunctions.dll'
'MyApp.DesktopApp.exe': Loaded 'C:\WINDOWS\system32\dbghelp.dll'
'MyApp.DesktopApp.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456\msvcm90d.dll', Symbols loaded.
'MyApp.DesktopApp.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.MFCLOC_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_11f3ea3a\mfc90enu.dll', Binary was not built with debug information.
CCollectionDataType ConstCCollectionDataType ConstCCollectionDataType ConstCCollectionDataType ConstCCollectionDataType ConstCCollectionDataType Const'MyApp.DesktopApp.exe' (Managed): Loaded 'D:\WordAutomation\MyApp_Source\Executables\MyApp\ManagedFrameworkWrapper.dll', Symbols loaded.
'MyApp.DesktopApp.exe' (Managed): Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456\msvcm90d.dll', Symbols loaded.
The thread 'Win32 Thread' (0x12ec) has exited with code 0 (0x0).

Fall 2: Führen Sie die gleiche Linie, sondern aus einer Word-Code-Behind-CS-Datei gestartet

A first chance exception of type 'System.IO.FileNotFoundException' occurred in WindowsBase.dll
The program '[5320] WINWORD.EXE: Managed' has exited with code 0 (0x0).

Ich habe versucht,

  • Hinzufügen der nicht verwalteten DLLs auf den gleichen Ordner als (Wort doc + VSTO dll)
  • hinzugefügt, um den Ordner in der Umgebungsvariable PATH . Immer noch das gleiche.
  • alles, was ich von .. für die letzten paar Tage einfiel

Ich stelle fest, dass Word zu einem Ort Kopieren über den verwalteten ref Baugruppen zu sein scheint, wie in unten Snippet gezeigt .., die eine Reihe von Untersuchungen sein kann. Aber warum ist Wort dies zu tun und wie es nicht verwalteten DLLs nicht lösen .. Ich weiß es nicht. Auch im ersten Schnipsel gibt es einige DLLs von einem Pfad WinSxS geladen, die auch eine andere Leitung sein könnte.

'WINWORD.EXE' (Managed): Loaded 'C:\Documents and Settings\pillaigi\Local Settings\Application Data\assembly\dl3\6HQYB5GK.LY0\KC4WN109.HT4\4d81c901\70abeb86_124ec901\MyWPFPlotPopup.DLL', Symbols loaded.

Schließlich anmutig schließen ... Hilfe !!

War es hilfreich?

Lösung

Um herauszufinden, welche DLL das Problem verursacht, und wo die DLL für die Verwendung ProcessMon sah werden (frei von Sysinternals).

Siehe meine Antwort hier: referenzierte Antwort

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top