我有一个.NET v2.0dll,它向COM公开了一些类。该程序集名为BLogic.DLL
我从遗留的visual basic 6.0应用程序中调用这些类。我可以生成和EXE文件,如果我有Blogic.dll在同一文件夹作为EXE,程序运行没有任何问题。
但是,如果我尝试在VB6调试器中启动相同的程序,我会得到一个:
Automation Error
The system cannot find the file specified我假设当我在调试器中运行时,找不到PLogic.dll文件。我尝试将其放入System32文件夹和与VB6.EXE文件相同的文件夹中,但仍然收到相同的错误。
其他可能有帮助的事实:
PLogic.dll不是强名称程序集。它依赖于没有强签名的第三方引用,所以VS不允许我对它进行强签名。然而,第三方功能不会被VB6代码调用,而且它不是ComVisible。
发布于 2010-05-26 02:52:04
如果不将ComVisible .NET程序集放在GAC中,则必须对Regasm.exe使用/codebase选项
发布于 2010-05-26 02:08:52
这已经有一段时间了,所以我可能会对此感到困惑,但我有一些内存,当调试VB6支持dlls时,应该在项目文件夹中,所以与项目文件在同一文件夹中。
编辑:我刚刚意识到,因为它是一个COM DLL,位置应该不重要,因为它应该已经注册了,我不记得它是如何与.NET COM DLL一起工作的,但我建议尝试Regasm (因为它没有一个强名称,所以你可能不得不创建Tlib并在上面运行Regtlib )。
发布于 2010-05-26 02:17:58
这只是一个想法:这个错误可能是DLL中的“正常”异常,而不是互操作问题。此异常仅在VB6.exe中调试时发生的原因可能是相对路径(./omething.txt)在调试时是相对于VB6.exe的。
https://stackoverflow.com/questions/2907186
复制相似问题