我是不是需要注册 COM dll 才能在 .NET 项目中引用它?

Posted

技术标签:

【中文标题】我是不是需要注册 COM dll 才能在 .NET 项目中引用它?【英文标题】:Do I need to register the COM dll to be able to reference it on the .NET project?我是否需要注册 COM dll 才能在 .NET 项目中引用它? 【发布时间】:2010-12-24 08:59:36 【问题描述】:

我正在尝试通过使用“浏览”选项卡并选择 DLL 在 Visual Studio 中引用 COM dll。我注意到如果 DLL 在系统上使用 regsvr32 注册,我可以引用它,但如果它没有注册,我会收到选择 dll 文件的错误“无法添加对‘file.DLL’的引用。请确保文件是可访问的,并且它是一个有效的程序集或 COM 组件。" 我们希望保持 DLL 未注册,以便我们在其他开发机器和开发环境上需要的配置更少。 问的太多了吗? 谢谢!

【问题讨论】:

【参考方案1】:

您需要注册 dll。您可以在安装项目中设置注册或为所有这些类型的流程创建批处理文件。 注意:不要忘记在卸载时取消注册 dll。

【讨论】:

【参考方案2】:

您需要注册 dll,否则它将无法找到类型库。 之后添加 dll 作为对您项目的引用将创建 interop.XXXXmethod.dll 程序集。

【讨论】:

【参考方案3】:

您需要注册 COM 服务器,期间。您可以采取一些措施来自动化该过程,并在不需要时取消注册 COM 服务器。

这同样适用于日常构建。如果在构建过程中构建 COM 服务器和基于 .NET 的客户端,则必须在构建客户端之前注册服务器。并且您最好在构建客户端后立即取消注册。将这些步骤添加到构建序列中根本不是问题。

【讨论】:

【参考方案4】:

您也许可以使用Registration Free Com

【讨论】:

以上是关于我是不是需要注册 COM dll 才能在 .NET 项目中引用它?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 C# 需要注册 COM DLL 才能引用它?

如何在vb6中注册一个不能用作com互操作的.net DLL?

需要在注册表中找到已注册 com dll 的 clsid

.Net DLL每次编译都需要重新注册

对于此 WIX 配置,我是不是需要 MSIUSEREALADMINDETECTION 并注册 COM DLL?

免注册 com dll 要求安装 .net framework 3.5,而它在注册时工作正常