我有一个 C# 程序,它做了一些 Word 和 Excel 自动化,它使用了 Office 2003 Primary Interop Assemblies。我部署它的方式是将 Interops 包含在 bin 中,我让我的程序从那里引用它,而不是从 GAC 引用它(不是很专业,但它工作了几年)。最近在 3 台机器上安装了 office 2007 兼容包,现在当我的软件尝试调用 Word 或 Excel 时,我收到一个错误:
无法将 Microsoft.Office.Interop.Word.ApplicationClass 类型的 COM 对象转换为接口类型 Microsoft.Office.Interop.Word.Application,此操作失败,因为对具有 IID {00020970-0000 的接口的 COM 组件的 QueryInterface 调用-0000-C000-000000000046} 由于以下错误而失败:库未注册。(来自 HRESULT 的异常:0x8002801D (TYPE_E_LIBNOTREGISTERED))
经过一番搜索,我注意到安装兼容包 Word11 和 Word12 都安装在 GAC 中,与 Excel 相同。
我试图让我的程序引用 GAC 中的 Word11 互操作,但仍然没有帮助。我卸载了 Word12 互操作,但仍然没有帮助。似乎安装它似乎改变了一些注册表设置或者我的软件感到困惑的东西找不到正确的库。
有人有什么想法吗?