5

让我先说我不熟悉 COM 引用,并且我在 Windows 7 64 位机器上使用 VS2010。今天早上,我从 TFS 中删除了一个现有项目。然后我尝试构建项目并收到此错误:

找不到类型或命名空间名称“validatecom”(您是否缺少 using 指令或程序集引用?)

我得到这个警告:

无法获取类型库“d0b51ccc-aa31-47a1-b3ff-b8ed71c522a1”1.0 版的文件路径。图书馆未注册。(来自 HRESULT 的异常:0x8002801D (TYPE_E_LIBNOTREGISTERED))

当我检查引用时,果然,我在解决方案中唯一的 COM 引用中看到了黄色感叹号。经过一些徒劳的测试,我决定尝试添加一个新的 COM 引用。

添加参考 -> COM 选项卡 -> 随机 M$ 库

这会产生一个带有黄色感叹号的新引用。我尝试构建项目以查看是否出现相同的错误。这次我收到此错误:

遇到了 GUID 为“23d736f1-acbc-11d3-b0e8-00104bff2710”的程序集的多个版本。尝试预导入这些程序集之一。

我得到这个警告:

找不到类型库“ADODB”的包装程序集。

我不知道这两个错误是否相关。如果不是,那么解决第一个肯定优先于最后一个。

4

1 回答 1

5

要检查的另一件事是您的 COM 库是否已在 Windows 的注册表中注册,您可以这样做:

%windir%\system32\regsvr32 YourComLibrary.dll

接下来,您需要创建一个互操作 .NET DLL,该 DLL 包含您尝试在 C# 项目中引用的 COM 库。执行此操作的方法是运行类型库导入器实用程序(使用 Visual Studio 2010 命令提示符):

tlbimp.exe YourComLibrary.dll /out:YourWrappedComLibrary.dll

至于 ADODB 参考,您可能需要参考Primary Interop Assembly for ADO (ADODB)。这可以在您的机器上的以下位置找到。添加对此的引用,您应该会很好。

C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\adodb.dll

希望以上内容可以帮助您。自从我弄乱COM以来已经太久了……记忆可能有点模糊。享受!

于 2013-01-09T16:44:18.153 回答