如何将COM服务器转换为CLR程序集,以便我不必最初重写任何内容。
答案 0 :(得分:0)
我在这里发布了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);
}
}
}