c# - 现有 COM 引用或添加新引用时出错

标签 c# visual-studio-2010 reference assemblies

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

The type or namespace name 'validatecom' could not be found (are you missing a using directive or an assembly reference?)

我收到这个警告:

Cannot get the file path for type library "d0b51ccc-aa31-47a1-b3ff-b8ed71c522a1" version 1.0. Library not registered. (Exception from HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED))

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

添加引用 -> COM 选项卡 -> 随机 M$ 库

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

Encountered multiple versions of the assembly with GUID '23d736f1-acbc-11d3-b0e8-00104bff2710'. Try pre-importing one of these assemblies.

我收到这个警告:

Cannot find wrapper assembly for type library "ADODB".

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

最佳答案

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

%windir%\system32\regsvr32 YourComLibrary.dll

接下来,您需要创建一个互操作 .NET 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 以来已经太久了……内存可能有点模糊。享受吧!

关于c# - 现有 COM 引用或添加新引用时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14237766/

相关文章:

c# - MVC 存储库架构和访问不同的表

.net-4.0 - Windows Workflow 4.0 事件未添加到工具箱

c# - 引用类型是一个对象?

java - 引用数组中的位置而不是其中的数据。 ( java )

php5 : does the 'copy' of an array for a foreach incur overhead?

c# - 打开/处理 Word 文档,如 SharePoint

C# 使背景图像适合屏幕?

c# - 'System.Web.Http.GlobalConfiguration' 的类型初始值设定项抛出异常

vb.net - Web.config 转换选项呈灰色

c++ - 性能计数器索引 windows pdh c