How Can I convert a COM server to a CLR Assembly so that I don't have to initially rewrite anything.
问问题
150 次
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 回答