一、创建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是自己编得号不能重复
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#编写的库,需要用加载程序集的方式????

(60)c# com com+ dcom的更多相关文章

  1. win2003 Enterprise x64 Edtion中的DCOM服务找不到WORD应用程序

    打开注册表,找到以下健值 HKEY_CLASSES_ROOT\AppID\{00020906-0000-0000-C000-000000000046} HKEY_CLASSES_ROOT\CLSID\ ...

  2. win10 64位专业版系统中显示32位dcom组件配置的方法

    word.excel是32位的组件,当用户64位系统在运行窗口中输入dcomcnfg命令时,在打开的组件服务管理窗口,是找不到Microsoft Excel.word程序的.另外,Windows 环境 ...

  3. From 202.97.60.193 icmp_seq=48 Time to live exceeded

    从浙江某电信ip的服务器上 ping 大陆外某个外网地址不通,报如下信息: From 202.97.60.193 icmp_seq=48 Time to live exceeded google,百度 ...

  4. 60阶单群同构于A5的证明

    设$G$是$60$阶的单群,我们来证明他同构于$A_5$,一个比较直观地思路是考虑群表示$\phi:G\to S(\Sigma)$,由同态基本定理得到$$G/{\rm Ker}\phi \simeq ...

  5. 60分钟Python快速学习(给发哥一个交代)

    60分钟Python快速学习 之前和同事谈到Python,每次下班后跑步都是在听他说,例如Python属于“胶水语言啦”,属于“解释型语言啦!”,是“面向对象的语言啦!”,另外没有数据类型,逻辑全靠空 ...

  6. 实用的60个CSS代码片段

    1.垂直对齐 如果你用CSS,则你会有困惑:我该怎么垂直对齐容器中的元素?现在,利用CSS3的Transform,可以很优雅的解决这个困惑: .verticalcenter{ position: re ...

  7. ASP.NET 操作Excel中的DCOM配置方式

    具体配置方式如下: 1. 组件服务管理窗口 在运行栏中输入命令:dcomcnfg,打开组件服务管理窗口,在组件服务->计算机->我的电脑->DCom配置->找到Microsof ...

  8. 60个有用CSS代码片段

    1.垂直对齐 如果你用CSS,则你会有困惑:我该怎么垂直对齐容器中的元素?现在,利用CSS3的Transform,可以很优雅的解决这个困惑: .verticalcenter{ position: re ...

  9. 在DCOM 中不存在WORD、EXCEL等OFFICE组件

    DCOM里面没有与office相关的所有组件解决方法:先简单说下,操作步骤(项目演示完成后,补上图): Run MMC -32 File Add Remove Snap-in Component Se ...

随机推荐

  1. Notepad++正则表达式合并多行代码为1行

    有时候你想要缩减代码行数,多行并1行,像网页流行的JS代码,查看时多见这种情况,但是有时你想把多行switch case缩成1行,再手动分开,每个case一行. 这种对齐方式似乎在日式程序员的代码中经 ...

  2. Git002--安装

    Git--安装 本文来自于:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00 ...

  3. Java IO(1)

    IO这一部分内容还是比较多的,对于基础的枯燥但是又重要的内容还是将它记下来比较好. 关于File类 Ø File类直接继承与Object类,File类描述了文件本身的一些属性,File类用来获取或者处 ...

  4. bfs(火星撞地球)

    Meteor Shower 链接:https://ac.nowcoder.com/acm/contest/997/I来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 327 ...

  5. [BZOJ1604][Usaco2008 Open]Cow Neighborhoods 奶牛的邻居 (Treap+单调队列)

    题面 了解奶牛们的人都知道,奶牛喜欢成群结队.观察约翰的N(1≤N≤100000)只奶牛,你会发现她们已经结成了几个"群".每只奶牛在吃草的时候有一个独一无二的位置坐标Xi,Yi( ...

  6. 好用的for循环与range

    for循环 # for 变量 in 可迭代对象: # pass s = "1234567890" for each in s: # 遍历字符串 print(each) # 1 2 ...

  7. UVALive 6270 Edge Case(找规律,大数相加)

    版权声明:本文为博主原创文章,未经博主同意不得转载. vasttian https://blog.csdn.net/u012860063/article/details/36905379 转载请注明出 ...

  8. JavaScript 数组sort方法使用

    直接上例子 1.无参调用返回按unicode字符编码排序 var arr = [1,2,0,21,15,6,34,9,45]; var arrSort = arr.sort(); console.lo ...

  9. 负载均衡算法WeightedRoundRobin(加权轮询)简介及算法实现

    Nginx的负载均衡默认算法是加权轮询算法,本文简单介绍算法的逻辑,并给出算法的Java实现版本. 本文参考了Nginx的负载均衡 - 加权轮询 (Weighted Round Robin).     ...

  10. ob_start()、ob_get_contents() 等使用方法

    ob_start()ob_get_contents(); 获取缓冲区内容ob_end_clean():删除内部缓冲区的内容,并且关闭内部缓冲区 ob_end_flush() 发送内部缓冲区的内容到浏览 ...