【问题标题】:VS 2012.3 Referencing MS Access COM DLL, could not resolve COM reference errorVS 2012.3 引用 MS Access COM DLL,无法解决 COM 引用错误
【发布时间】:2013-11-12 04:03:33
【问题描述】:

我在 VS2012.3(32 位 exe)中创建了一个新的控制台项目,并添加了对 Microsoft Access 的 COM 类型库引用(我尝试了 2003 和 2007)。 “Microsoft Access”引用显示在“添加引用”对话框中没有问题。但是,在关闭该对话框后,VS 会在两个新添加的引用上显示一个黄色三角形叠加层,并且出现以下构建错误:

无法解析 COM 引用“4affc9a0-5f99-101b-af4e-00aa003f0f07” 9.0 版。对象引用未设置为对象的实例。

我的同事可以在他们的计算机上毫无问题地执行此操作。所以我想弄清楚我的机器可能有什么问题。我运行的是 Windows 8.1,而其他人运行的是 Windows 8.0 和 7 的混合版本。有什么想法吗?

更新 - 一些屏幕截图:

【问题讨论】:

    标签: visual-studio ms-access visual-studio-2012 com windows-8.1


    【解决方案1】:

    问题已解决: 我在这里找到了解决方案:http://support.microsoft.com/kb/823996.
    我所要做的就是打开“VS2012 的开发人员命令提示符”,向下导航到 GAC 的 ADODB 文件夹,然后运行 ​​regasm.exe ADODB.dll。这解决了整个问题。

    问题已解决:

    【讨论】:

    • 是的,我真的希望它可以帮助别人!感谢您的所有帮助和建议......它让我有动力不放弃。
    • 哇!有一个 COM 组件问题(就在 Windows 10 11 月更新之后),并且 ADODB 在我的参考文献中也以感叹号列出,这样做可以解决所有问题!非常感谢!
    • 非常感谢,这帮了我很多忙。另请参阅这篇文章,其中解释了如何从命令提示符而不是开发人员命令提示符运行 regasm。 stackoverflow.com/questions/973939/…
    【解决方案2】:

    Windows 8.1 附带最新的 .NET 4.5.1 运行时。首先,尝试installing .NET 3.5(包括 .NET 2.0/3.0,默认情况下不存在)。你可以通过Control Panel/Turn Windows Feartures on and off来做到这一点。

    此外,{4AFFC9A0-5F99-101B-AF4E-00AA003F0F07} GUID 表明您使用的是 Office 2010。应在此处找到相应的类型库:

    C:\Program Files (x86)\Microsoft Office\Office14\MSACC.OLB

    尝试使用 OleView 打开它,看看是否有任何错误。

    下一步将检查 Access 的主互操作程序集 (PIA) Microsoft.Office.Interop.Access.dll 是否已正确安装。它应该在以下位置找到:

    C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Access\

    最后,您可以尝试修复您的 Office 2010 安装(应该重新注册类型库),重新安装Office 2010 PIAs,最后安装最新的VSTO Runtime(显然是那个链接is still the latest for VS2013)。

    【讨论】:

    • 感谢您的建议。我确认已安装 .NET 3.5。对于多个版本的 Office,GUID 实际上是相同的。请参阅我上面的新屏幕截图(希望它显示)以查看 OLEView 显示的内容。所以它与 Access 2003、2007、2010 的 GUID 完全相同。尝试打开 C:\Program Files (x86)\Microsoft Office\Office11\MSACC.OLB 文件时确实出现错误:IMoniker::BindToObject failed ... 文件 MK_E_INVALIDEXTENSION($800401E6) 的扩展名错误。 Microsoft.Office.Interop.Access 11.0.0.0 确实在 GAC 中。我尝试重新安装 Access 2003,仍然有问题。
    • @LeeGrissom,您的 MSACC.OLB 似乎没有正确注册或损坏。从同事的机器上抓取它并尝试重新注册。曾经有 REGTLIB.EXE 实用程序。 MS 从 Win8 中删除了它,但你可以从任何 Win7 机器上获取它:C:\Windows\Microsoft.NET\Framework\v4.0.30319\regtlibv12.exe
    • @LeeGrissom,还有一个可能的原因:Office 2003 applications are not compatible with Windows 8
    • 我使用 regtlibv12.exe 重新注册了 MSACC.OLB 并重新启动。它似乎没有帮助。是的,Win8 不支持正式的 Access 2003,但我的两个同事可以正常工作。但是我正在运行Win8.1,所以也许它是无望的。到目前为止,我真诚地感谢您的帮助......我非常感激。
    • 今天,我没有专注于 Access,而是专注于了解为什么 ADODB 参考不起作用。我在帖子中附加了 4 个新的屏幕截图,显示了我的发现。我将它与我的 Windows 7 VM(效果很好)进行了比较。有两点不同: (1) adodb.dll 的大小在 Win8.1 上更大(即使版本声称相同)。 (2) 在 Win8.1 上的 Registry 中,所有 TypeLib 版本键中都缺少注册表值“PrimaryInteropAssemblyName”。例如,请参见屏幕截图。
    猜你喜欢
    • 2014-01-12
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多