首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >.NET互操作COM DLL在VB6调试器中的行为不同

.NET互操作COM DLL在VB6调试器中的行为不同
EN

Stack Overflow用户
提问于 2010-05-26 01:59:46
回答 4查看 1.9K关注 0票数 1

我有一个.NET v2.0dll,它向COM公开了一些类。该程序集名为BLogic.DLL

我从遗留的visual basic 6.0应用程序中调用这些类。我可以生成和EXE文件,如果我有Blogic.dll在同一文件夹作为EXE,程序运行没有任何问题。

但是,如果我尝试在VB6调试器中启动相同的程序,我会得到一个:

代码语言:javascript
运行
复制
   Automation Error    
   The system cannot find the file specified

我假设当我在调试器中运行时,找不到PLogic.dll文件。我尝试将其放入System32文件夹和与VB6.EXE文件相同的文件夹中,但仍然收到相同的错误。

其他可能有帮助的事实:

PLogic.dll不是强名称程序集。它依赖于没有强签名的第三方引用,所以VS不允许我对它进行强签名。然而,第三方功能不会被VB6代码调用,而且它不是ComVisible。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-26 02:52:04

如果不将ComVisible .NET程序集放在GAC中,则必须对Regasm.exe使用/codebase选项

票数 5
EN

Stack Overflow用户

发布于 2010-05-26 02:08:52

这已经有一段时间了,所以我可能会对此感到困惑,但我有一些内存,当调试VB6支持dlls时,应该在项目文件夹中,所以与项目文件在同一文件夹中。

编辑:我刚刚意识到,因为它是一个COM DLL,位置应该不重要,因为它应该已经注册了,我不记得它是如何与.NET COM DLL一起工作的,但我建议尝试Regasm (因为它没有一个强名称,所以你可能不得不创建Tlib并在上面运行Regtlib )。

票数 0
EN

Stack Overflow用户

发布于 2010-05-26 02:17:58

这只是一个想法:这个错误可能是DLL中的“正常”异常,而不是互操作问题。此异常仅在VB6.exe中调试时发生的原因可能是相对路径(./omething.txt)在调试时是相对于VB6.exe的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2907186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档