1.visual studuio操作
1.1visual Studio创建类库项目ClassLibrary1。
1.1.1ClassLibrary1项目Class1.cs内容如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;namespace ClassLibrary1
{[ComVisible(true)][Guid("D8C1EAA7-C829-46EF-A42E-2C9130467DB4")]interface IClass1{string Class1Property { get; set; }[DispId(1)]string Class1Function1();[DispId(1)]void Class1Function2(string message);}[ComVisible(true)][Guid("CB5F70B2-3F6C-4410-B5B8-BD9C97042396")][ProgId("ClassLibrary1.Class1")]//通过这个调用该COM组件public class Class1: IClass1{public string Class1Property { get; set; }public string Class1Function1(){Console.WriteLine($"Function1");return "Function1Result";}public void Class1Function2(string message){Console.WriteLine($"Function1:{message}");}}
}
1.2右键项目,左键”属性“。
1.3勾选“生成“选项卡的”为COM互操作注册“勾选框。
1.4勾选”签名“选项卡的”为程序集签名‘勾选框。
1.5”左键选择强名称密钥文件“下拉框箭头,左键”新建“。
1.6在”创建强名称密钥“弹窗中输入”密钥文件名称“文本框,取消”使用密码保护密钥文件“勾选框,左键”确定“。
1.7.保存工程,关闭visual studio后以管理员模式运行,打开项目,右键项目,左键”重新生成“。
2.命令提示符操作
2.1以管理员模式打开命令提示符(cmd),输入:
cd C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\x64
gacutil -i <dll路径>
cd C:\Windows\WinSxS\wow64_regasm_b03f5f7f11d50a3a_4.0.15912.0_none_9dcb4fe8bf21aec2
RegAsm <dll路径>
随后即可在注册表HKEY_CLASSES_ROOT找到ProgId:ClassLibrary1.Class1。
3.调用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp1
{internal class Program{static void Main(string[] args){object obj = Activator.CreateInstance(Type.GetTypeFromProgID("ClassLibrary1.Class1"));obj.GetType().GetProperty("Class1Property").SetValue(obj,"hahaha1");Console.WriteLine((string)obj.GetType().GetProperty("Class1Property").GetValue(obj));Console.WriteLine((string)obj.GetType().GetMethod("Class1Function1").Invoke(obj,new object[] { }));obj.GetType().GetMethod("Class1Function2").Invoke(obj,new object[] {"hahaha2" });}}
}
4.结果