我有一个围绕未签名的第三方程序集的c#Adapter程序集,所以我也无法签署我的程序集。我的适配器组件将由VB6程序用于访问第三方程序集中的功能,该功能不是COM。但是,虽然我可以使用regasm注册程序集,并生成一个tlb文件,并在VB6中引用它,但当我尝试将我的Dimmed变量设置为我的适配器的新实例时,我得到一个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但看不到任何东西。有没有办法确定问题所在?
@Renat在原帖子的评论中称之为。
在VS2019中重新编译为显式32位并交换为在目标计算机上的C:\ Windows \ Microsoft.Net \ Framework \ regasm.exe中使用x86 regasm。
我正在使用64位操作系统(Windows 2012 r2)在目标机器上运行VB6,但它仍将编译为x86程序集。
所以我猜这个教训是VB6的x86,但我认为你们都知道:无论如何:S