我有一个未签名的第三方程序集周围的C#适配器程序集,因此我也无法对我的程序集进行签名。 VB6程序将使用我的适配器程序集访问第三方程序集(不是COM)中的功能。 但是,虽然我可以使用regasm注册程序集,并生成tlb文件并在VB6中引用它,但是当我尝试将Dimmed变量设置为Adapter的新实例时,却收到了ActiveX异常。
我已经安装了相应的.Net框架,并且可以通过命令行在安装VB6的计算机上通过另一个.Net可执行文件运行我的适配器程序集。
在没有第三方参考的情况下,这就是我设置COM的方式。以防万一,这是问题所在。
[ComVisible(true)]
[Guid("F728D70E-ED98-456C-B8C6-4EA5B0EF8A1A")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("SimpleComClass452.MySimpleComClass")]
public class MySimpleComClass : _MySimpleComClass
{
public int Add(int num1, int num2)
{
return num1 + num2;
}
}
[ComVisible(true)]
[Guid("C729E6FF-C2F5-4C9B-8200-A135E15576A6")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface _MySimpleComClass
{
[DispId(1)]
int Add(int num1, int num2);
}
如何从VB6访问我的.NET COM意识的适配器程序集,使问题更深入?我看过procmon,但什么也看不到。 有什么办法可以确定问题出在哪里?
答案 0 :(得分:2)
@Renat在原始帖子的评论中称呼它。
在VS2019中重新编译为显式32位,并交换为在目标计算机上的C:\ Windows \ Microsoft.Net \ Framework \ regasm.exe中使用x86 regasm。
我正在使用64位OS(Windows 2012 R2)在目标计算机上运行VB6,但它仍将编译为x86程序集。
所以我想这课是VB6的x86,但是我想大家都知道:S