Excel .NET COM - 自动化错误.该系统找不到指定的文件

ing*_*ngt 18 .net com excel automation

我有一个.NET 2.0 COM对象,由VBA在Excel中使用.它在我的开发机器上工作正常,但是当试图在干净的VM工作站上使用它时,我收到此错误:

自动化错误.该系统找不到指定的文件.

该DLL已在"regasm/tlb/codebase mycom.dll"中注册,而不是放在GAC中.我没有VM框的管理权限

有任何想法吗?

sha*_*oth 16

您需要使用程序集的完整路径作为codebase参数值调用regasm,或者将程序集放入某个位置,该位置始终位于搜索库的路径上.否则,当客户端尝试实例化COM对象时将找不到它.


Ken*_*erg 8

在Windows 7,64位和.NET 4.0框架dll(32位),我希望可用作Microsoft Excel 2010 VBA应用程序的COM对象,这对我有用.

  1. 将dll复制到c:\ windows\syswow64
  2. 在cmd shell中,运行

    C:\Windows\Microsoft.NET\Framework\v4.0.<whatever you have>\regasm.exe c:\windows\syswow64\<name of dll> /codebase /tlb:c:\windows\syswow64\<name of dll minus '.dll'>.tlb
    
    Run Code Online (Sandbox Code Playgroud)

如果您不想要或需要在注册程序集的计算机上进行智能感知,则可以跳过最后一部分(/ tlb:...).

我遇到的关键问题是,在XP上我从来没有使用/ codebase参数,但这是在此工作之前所需的关键事项.


cla*_*mum 5

在我创建了一个 .NET .dll (v4.0) 并打算在 VB6 应用程序中使用它之后,我收到了这个“自动化错误。系统找不到指定的文件”错误(用“ClassInterface”和“ ComVisible”属性,带有“ComVisible”的方法)。

我运行了“regasm.exe -tlb C:\PathTo\MyDll.dll”,但在我的 VB6 应用程序中添加 .tlb 文件作为参考并运行/调试它后收到上述错误。只有在将“-codebase”参数添加到 regasm.exe 调用并重新添加 .tlb 引用后,错误才得到解决。

只是想我会分享我的经验。