3

How Can I convert a COM server to a CLR Assembly so that I don't have to initially rewrite anything.

4

1 回答 1

1

我在此处为 OP 发布了此内容,因为他们最初将其发布为对问题的编辑。

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

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

在此处输入图像描述

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

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

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

使用 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);
        }
    }
}
于 2014-03-08T21:54:18.567 回答