我有一个 MS-Word VSTO 文档,其中包含一个名为WordDocument1.dll
项目文件夹 D:\Work\Seven\WordAutomation\ContentControls\WordDocument1\bin\Debug
我已将一些自定义代码复制到该MyAppExecs
文件夹下的文件夹中。DLL 具有指定的专用 bin 路径,以便MyAppExecs
可以访问其中的代码。
所以在启动时,我在应该弹出一个对话框Starter.DLL
的MyAppExecs
文件夹中加载一个,它确实如此。但是,单击对话框上的按钮需要加载X.DLL
,它具有非托管依赖项。(X.DLL
有一些托管的 C++,有一些指定为附加依赖项的库。X 是无符号的,是一个私有程序集,不在 GAC 中)
但是,X.DLL 无法解析。从该fuslogvw
工具中,我看到它正在尝试将这个 DLL 加载到 Office12 文件夹中并且失败。我也ProcMon
运行过,但是,它没有显示任何未找到的非托管依赖文件错误。
- 如何让 Word Executable 看到其中存在的 X.Dll
D: \Work\Seven\WordAutomation\ContentControls\WordDocument1\bin\Debug
?
此外,它似乎很奇怪,它可以加载Starter.DLL
和大量其他{ProjFolder}\MyAppExecs
文件而没有任何问题,但看不到{ProjFolder}
.
这是fuslogvw
输出:
*** Assembly Binder Log Entry (12/9/2008 @ 6:10:06 PM) ***
The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.
Assembly manager loaded from: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
Running under executable C:\Program Files\Microsoft Office\Office12\WINWORD.EXE
--- A detailed error log follows.
=== Pre-bind state information ===
LOG: User = GEIPS-EURO\PillaiGi
LOG: DisplayName = MyNamespace.X, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5574221fffc7dcd4
(Fully-specified)
LOG: Appbase = file:///C:/Program Files/Microsoft Office/Office12/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = NULL
Calling assembly : (Unknown).
===
LOG: This bind starts in default load context.
LOG: No application configuration file found.
LOG: Using machine configuration file from C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Post-policy reference: MyNamespace.X, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5574221fffc7dcd4
LOG: GAC Lookup was unsuccessful.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Office/Office12/MyNamespace.X.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Office/Office12/MyNamespace.X/MyNamespace.X.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Office/Office12/MyNamespace.X.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Office/Office12/MyNamespace.X/MyNamespace.X.EXE.
LOG: All probing URLs attempted and failed.
更新#1:解决了症状,但无法确定问题的原因。我通过 Assembly.load 手动加载了程序集。但是,上面的程序集解析错误一直被记录下来,但它不起作用。最后,在绝望的情况下,我将我的 word-project DLL 复制到{ProjFolder}\MyAppExecs
这样所有的 DLL 都在一个文件夹中并且它开始工作了。
当我运行时,看起来一些非托管依赖项X.dll
没有得到解决,{ProjFolder}...
但是ProcMon
没有显示任何迹象。还将 PATH 变量更新为 include {ProjFolder}\MyAppExecs
,但没有运气。
因此,将它们全部复制到一个文件夹中是可行的。X.dll
不是我的代码,所以我无法进一步调查。