Regasm 不工作/ActiveX 组件无法创建对象
Regasm is not working / ActiveX component can't create object
我在 Visual Studio 中编写了一个 C# .dll,我想从 excel VBA 调用它。 (我用的是this教程)
在我的开发 PC 上,我在 "Make COM-Visible"、"Register for COM interop" 和 "sign the assembly" 的项目属性中设置了设置,一切正常。该 dll 由 Visual Studio 自动注册,我可以 select 并将其设置为 Excel in VBA Window > Tools > References
现在的用例是我可以在另一台没有安装 Visual Studio 的 PC 上使用该 dll 文件。
正如教程和互联网上所说的那样,要走的路是使用命令行工具 RegAsm.exe
,我所做的(如果它有用:我使用了以下文件夹中的工具:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe
)
注册dll的命令是:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe D:\Debug\DotNetLibrary.dll /tlb /codebase.
这运行没有错误,命令行告诉我类型已正确注册并且 tlb 已导出和注册。
似乎一切正常,注册表中还有一个条目 (Computer\HKEY_CLASSES_ROOT\TypeLib) 引用了我的 dll,但该库没有出现在 [= 中的参考 window 中43=] 就像在另一台 PC 上一样。
如果我 select 由 RegAsm 手动生成的 tlb,通过单击参考 Window 中的浏览,它会被添加到列表中。但是如果我随后启动代码,我会收到 ActiveX 组件无法创建对象的错误。
几天以来我一直在检查这个问题,所以如果有人能帮助我,那就太好了。
正如@HansPassant 在我的问题下的评论中提到的,简单的解决方案是使用 32 位版本的 regasm(位于 C:\Windows\Microsoft.NET\Framework\v4.0.30319)
这需要完成,因为 Microsoft Office 产品仍然是 32 位的。
我在 Visual Studio 中编写了一个 C# .dll,我想从 excel VBA 调用它。 (我用的是this教程)
在我的开发 PC 上,我在 "Make COM-Visible"、"Register for COM interop" 和 "sign the assembly" 的项目属性中设置了设置,一切正常。该 dll 由 Visual Studio 自动注册,我可以 select 并将其设置为 Excel in VBA Window > Tools > References
现在的用例是我可以在另一台没有安装 Visual Studio 的 PC 上使用该 dll 文件。
正如教程和互联网上所说的那样,要走的路是使用命令行工具 RegAsm.exe
,我所做的(如果它有用:我使用了以下文件夹中的工具:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe
)
注册dll的命令是:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe D:\Debug\DotNetLibrary.dll /tlb /codebase.
这运行没有错误,命令行告诉我类型已正确注册并且 tlb 已导出和注册。
似乎一切正常,注册表中还有一个条目 (Computer\HKEY_CLASSES_ROOT\TypeLib) 引用了我的 dll,但该库没有出现在 [= 中的参考 window 中43=] 就像在另一台 PC 上一样。
如果我 select 由 RegAsm 手动生成的 tlb,通过单击参考 Window 中的浏览,它会被添加到列表中。但是如果我随后启动代码,我会收到 ActiveX 组件无法创建对象的错误。
几天以来我一直在检查这个问题,所以如果有人能帮助我,那就太好了。
正如@HansPassant 在我的问题下的评论中提到的,简单的解决方案是使用 32 位版本的 regasm(位于 C:\Windows\Microsoft.NET\Framework\v4.0.30319) 这需要完成,因为 Microsoft Office 产品仍然是 32 位的。