Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不带强名称的VB6中的DotNet COM_C#_.net_Com_Vb6 - Fatal编程技术网

C# 不带强名称的VB6中的DotNet COM

C# 不带强名称的VB6中的DotNet COM,c#,.net,com,vb6,C#,.net,Com,Vb6,我在未签名的第三方程序集周围有一个c#适配器程序集,因此我也无法对程序集进行签名。我的适配器程序集将被VB6程序用来访问第三方程序集(不是COM)中的功能。 但是,虽然我可以使用regasm注册程序集,生成tlb文件,并在VB6中引用它,但当我尝试将变暗的变量设置为适配器的新实例时,会出现ActiveX异常 我安装了相应的.Net Framework,可以通过安装VB6的计算机上的另一个.Net可执行文件从命令行运行适配器程序集 下面是我如何设置我的COM,无第三方参考..以防万一这是一个问题

我在未签名的第三方程序集周围有一个c#适配器程序集,因此我也无法对程序集进行签名。我的适配器程序集将被VB6程序用来访问第三方程序集(不是COM)中的功能。 但是,虽然我可以使用regasm注册程序集,生成tlb文件,并在VB6中引用它,但当我尝试将变暗的变量设置为适配器的新实例时,会出现ActiveX异常

我安装了相应的.Net Framework,可以通过安装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;
        }
    }
从VB6访问支持.NET COM的适配器程序集时,如何找到问题的根源?我看过procmon,但什么也看不见。
有没有办法确定问题出在哪里?

@Renat在原始帖子的评论中称之为

在VS2019中重新编译为显式32位,并交换为在目标计算机上使用位于C:\Windows\Microsoft.Net\Framework\regasm.exe的x86 regasm

我使用64位操作系统(windows 2012 r2)在目标机器上运行VB6,但它仍将编译为x86程序集


因此,我想课程是针对VB6的x86,但我想你们都知道:c#dll和VB6代码是否具有相同的位?例如,32位代码不能使用64位COM对象在VB6中收到的错误是什么?AFAIK强命名对VB6 COM互操作没有任何影响。至少我做了很多COM互操作(VB6调用C#)并且没有签署任何东西。你能发布VB6代码,并明确指出哪一行给了你什么错误吗?IIRC,如果你想将COM互操作程序集安装到GAC中,那么它需要强名称。但是如果您只是重新注册它,您应该能够实例化它。运行IDE时,可能需要将程序集的副本与vb6.exe(通常是C:\Program Files\Microsoft Visual Studio\VB98)放在同一文件夹中。
    [ComVisible(true)]
    [Guid("C729E6FF-C2F5-4C9B-8200-A135E15576A6")]
    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface _MySimpleComClass
    {
        [DispId(1)]
        int Add(int num1, int num2);
    }