(60)c# com com+ dcom

 一、创建COM组件

 1.创建项目

 

2.设置使程序集可见

AssemblyInfo.cs中flase改为ture 

 

 或者

项目属性

 

设置可见

 

 

3.Guid生成器

在开始程序下能够找到Guid生成器

每次都能产生一个全球唯一的COM组件标识符,

GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复

 

 

 

 

4.编写程序

using System;
using System.Runtime.InteropServices;

namespace ClassLibrary1
{
    public class Class1
    {
        [Guid("7C54E43E-974E-40ab-8E01-354E0E0ADE92")]//
        public interface ICom
        {
            [DispId(1)]//接口生成标志 1是自己编得号不能重复
            double Add(double x, double y);
        }

        [Guid("82DA7555-9338-40f7-87B2-344574BE361B")]
        public class Com:ICom
        {
            public double Add(double x, double y)
            {
                return x + y;
            }
        }
    }
}

 

4.互操作

项目属性-生成

勾选

 

公开一个允许 COM 对象与托管应用程序进行交互的 COM 对象

 https://docs.microsoft.com/zh-cn/previous-versions/visualstudio/visual-studio-2010/w29wacsy(v=vs.100)?redirectedfrom=MSDN

 

5.签名

为了使生成的COM可以在注册表示注册,需要进行强名称签名

项目属性-签名-为程序集签名-新建

 

 不勾选使用密码

项目下会生成一个.snk文件

用管理员身份运行项目,会自动注册

不使用管理会报错

 

 编译后注册表下会生成

并且程序下会生成tlb文件

 

 https://docs.microsoft.com/zh-cn/dotnet/standard/assembly/sign-strong-name

在VS里引用COM的时候就会发现多出了个ClassLibrary1

 
6.注册组件

将生成的DLL复制到d盘根目录

用管理员启动cmd

进入对应的.net目录

cd C:\Windows\Microsoft.NET\Framework\v4.0.30319

注册

RegAsm D:\ClassLibrary1.dll /tlb:ClassLibrary1.tlb /codebase

 

 

 

7.调用

(1)C#好像无法用COM引入C#编写的库,需要用加载程序集的方式????

 

posted @ 2019-10-01 14:41  富坚老贼  阅读(795)  评论(0编辑  收藏  举报