如何将COM程序集转换为CLR程序集?

时间:2012-04-12 15:42:47

标签: com

如何将COM服务器转换为CLR程序集,以便我不必最初重写任何内容。

1 个答案:

答案 0 :(得分:0)

我在这里发布了OP,因为他们最初将其发布为问题编辑。

我决定将它转换为CLR程序集,而不是在.Net中重写COM服务器(使用C ++ / MFC于1992年编写)。要获取COM程序集(add32.exe)并从.Net客户端使用它,我们需要创建一个可调用的包装器。使用Visual Studio命令提示符(以管理员身份)运行所有工具。

步骤1:使用强名称签署COM程序集

enter image description here

步骤2:将COM类型库中找到的定义转换为CLR程序集

使用工具Tlbimp.exe将COM类型库中的定义转换为CLR程序集。 Tlbimp.exe的输出是一个二进制文件(程序集),它包含原始类型库中定义的类型的运行时元数据。输出是一个DLL文件。我指定了一个名称空间,以便我们可以轻松地将元数据包含在.Net COM客户端中。

enter image description here

步骤3:使用ILDASM.EXE查看程序集。

enter image description here

要使用CLR程序集,我们在解决方案中为它创建一个引用。浏览dll文件并将其添加为参考。

enter image description here

使用COM对象的客户端应使用在步骤2中创建的命名空间导入元数据。

#using "Add32Pkg";

然后,使用COM功能:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using Add32Pkg;

namespace TestAdd32
{

    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {

            Add32Server Add32 = new Add32Server();
            Add32.Init(201);
        }
    }
}