トラブルシューティング:Wordの分離コードを介してカスタムコードを呼び出すと、参照されているアンマネージdllが見つかりません

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

質問

コンテキスト:

  1. D:\ WordAutomation \ MyApp_Source \ Executables \ MyAppフォルダーに特定のアンマネージDLLを使用するWPFアプリがあります。 exeをダブルクリックすると、すべてが実行されます。
  2. 次に、Word 2007のコードビハインドプロジェクトがあります。このプロジェクトは、上記のフォルダー内の関連するマネージDLLを参照し、同じことを試行します。AppUIを表示します。十分な「調整」を行った後、UIが表示されます。しかし今では、管理されていないdllの1つを強制的にロードするユーザーアクションがあり、FileNotFoundExceptionで一貫して爆発します(どのファイルが欠落しているかのヘルプ/表示なしで)

問題の行にブレークポイントを置き、出力ウィンドウをクリアし、F10キーを押して、その行を実行したときの出力を比較しました(コレクション変更ハンドラーがアンマネージピースをロードするコードを持つObservableCollectionにオブジェクトを追加します)

ケース1:EXEをダブルクリックします。これは完全に機能します(わずかに切り取られています)。

'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).

ケース2:同じ行を実行しますが、Wordの分離コード.csファイル内から起動します

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).

試しました

  • アンマネージDLLを(単語doc + VSTO dll)と同じ同じフォルダーに追加
  • フォルダーを PATH環境変数に追加しました。まだ同じ。
  • 私が考えることができるもの..過去数日間

Wordは、以下のスニペットに示すように、マネージrefアセンブリを場所にコピーしているように見えます。しかし、なぜこれをやっているのですか?アンマネージDLLをどのように解決するのですか?。私は知りません。また、最初のスニペットには、WinSXSパスから読み込まれたDLLがいくつかあり、これもまた別のリードになる可能性があります。

'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.

最後に優雅に閉じる...ヘルプ!!

役に立ちましたか?

解決

問題を引き起こしているDLLとそのDLLが検索されている場所を調べるには、ProcessMon(sysinternalsから無料)を使用します。

ここで私の答えを見てください: 参照された回答

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top