Q1:关于 VS2005 打包 Microsoft.mshtml 的解决方法
A1:在打包时出现了问题,Microsoft.mshtmal.dll 无法打入安装包,但 .NET Framework 2.0 又没有把这个 dll 安装到程序集的全局缓存。因此,就出现在装有 VS2005 的机器上程序运行正常,但安装到其他计算机上时出现找不到程序集的情况。这是因为在安装 VS2005 时,VS2005 安装程序会将这个 dll 安装到程序据全局缓存,打包时就不会再将该 dll 打到安装包中了。
解决的方法其实很简单,因为 Microsoft.mshtmal.dll 这个 dll 是从 system32 文件夹下的 mshtml.tlb(COM 类型库文件)中导出的,因此我们只需要用 VS2005 自带的 TlbImp.exe COM 类型库导出工具将这个 tlb 文件再导一遍就可以了。我使用下面的脚本进行导出:
tlbimp mshtml.tlb /out:mshtml.dll
最后得到一个 mshtml.dll 程序集文件,将我们项目中引用的 Microsoft.mshtmal.dll 替换为 mshtml.dll,再打包时这个 dll 就可以被添加到安装项目中了。