c#能调用c#创建com 吗

问题描述

usingSystem;usingSystem.Runtime.InteropServices;usingSystem.Text;namespaceMyCom{[Guid("154BD6A6-5AB8-4d7d-A343-0A68AB79470B")]publicinterfaceMyCom_Interface{[DispId(1)]intAdd(inta,intb);}[Guid("D11FEA37-AC57-4d39-9522-E49C4F9826BB"),InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]publicinterfaceMyCom_Events{}[Guid("2E3C7BAD-1051-4622-9C4C-215182C6BF58"),ClassInterface(ClassInterfaceType.None),ComSourceInterfaces(typeof(MyCom_Events))]publicclassClass1:MyCom_Interface{publicintAdd(inta,intb){returna+b;}}}一、大家都知道COM是需要注册的。注册时要加密钥文件.SNK。这一部就是生成SNK文件。进入VS2008命令提示符。用命令:sn–kMyCom.snk回车。我的在E:vs2008vc下面就生成了一个(MyCom.snk)的文件。(你们可以根据自己的命令提示符所在的文件目录下去找)。然后把它COPY到你的工程根目录下。二、打开AssemblyInfo.cs。在里面加入[assembly:AssemblyKeyFile("MyCom.snk")]三、(1)项目属性->应用程序->程序集信息->选中“使程序集COM可见”。(2)项目属性->生成->选中“为COM互操作注册”。四、生成。如果在Debug下有一个MyCom.tlb,在网上搜了个c#制作com的例子,如上所示。制作过程很顺利,但是怎么用c#调用不了,一调用就出错,调用过程1、项目/添加引用--点击com页,选择生成的MyCom.tlb2、错误信息:“未能添加对‘MyCom’的引用ActiveX类型库是从.NET程序集导出的,无法将其作为引用添加。请改为对.NET集的引用。”但在.NET页中根本找不到MyCom不知所云,请各位大侠指教!谢谢!!

解决方案

解决方案二:
com需要先注册,用regasm去注册后,c#就可以com引用了。
解决方案三:
(2)项目属性->生成->选中“为COM互操作注册”。这不就应该是com的注册了!我用了老兄的方法注册了一下,错误依旧!引用1楼knight94的回复:

com需要先注册,用regasm去注册后,c#就可以com引用了。

解决方案四:
引用楼主piao20040506的回复:

错误信息:“未能添加对‘MyCom’的引用 ActiveX类型库是从.NET程序集导出的,无法将其作为引用添加。请改为对.NET集的引用。”

异常信息已经说的很明白了...不需要这样调用,直接引用.NET程序集即可,.NET保留对COM的支持仅仅是为了兼容性...让.NET程序通过COM调用.NETCOM组件属于脱裤子放P...
解决方案五:
但在.net里找不到.dll!!引用3楼vrhero的回复:

引用楼主piao20040506的回复:错误信息:“未能添加对‘MyCom’的引用 ActiveX类型库是从.NET程序集导出的,无法将其作为引用添加。请改为对.NET集的引用。”异常信息已经说的很明白了...不需要这样调用,直接引用.NET程序集即可,.NET保留对COM的支持仅仅是为了兼容性...让.NET程序通过COM调用.NETCOM组件属于脱裤子放P...

解决方案六:
楼主,最后是怎么解决的?
解决方案七:
可以把写好的DLL考到你的项目目录下面,然后添加引用——>浏览就可以找到需要的DLL文件然后添加引用,就可以使用了!调用方法和你调用类的方式一样!

时间: 2024-07-31 02:48:19

c#能调用c#创建com 吗的相关文章

异常-Kinect2.0 调用 VGB创建的.gbd文件时出错

问题描述 Kinect2.0 调用 VGB创建的.gbd文件时出错 运行Kinect browser 自带程序DiscreteGeatureBasics时,把里面的seated.gbd换成自己录制生成的gbd文件就问报错:"System.InvalidOperationException"类型的异常在 Microsoft.Kinect.VisualGestureBuilder.dll 中发生,但未在用户代码中进行处理 其他信息: This API has returned an exc

js jquery-jsonp都要创建script,为什么$getJSON跨域调用没有创建script呢

问题描述 jsonp都要创建script,为什么$getJSON跨域调用没有创建script呢 jsonp都要创建script,为什么$getJSON跨域调用没有创建script呢 jsonp都要创建script,为什么$getJSON跨域调用没有创建script呢 解决方案 跨域了直接报错了吧,还创建script刚吗.getJSON是获取json数据,和jsonp不是一个东西 解决方案二: getJSON 就是获取json ,跨域的话不能执行的,jsonp 可以创建javascript ,不过

JAVA如何调用outlook创建约会提醒。

问题描述 请问:JAVA如何调用outlook创建约会提醒呢 解决方案 解决方案二:exchange的话可以掉服务器的API比如WebDAV方式的outlook直接的可能就比较麻烦了解决方案三:exchange的话可以掉服务器的API比如WebDAV方式的http://msdn.microsoft.com/en-us/library/aa142917%28v=EXCHG.65%29.aspxoutlook直接的可能就比较麻烦了解决方案四:引用2楼hepeng154833488的回复: excha

《Spring攻略(第2版)》——1.3 调用构造程序创建Bean

1.3 调用构造程序创建Bean 1.3.1 问题你想要调用构造程序在Spring IoC容器中创建一个Bean,这是创建Bean最常见和直接的方法.这和Java中使用new操作符创建对象相同. 1.3.2 解决方案通常,当你为一个Bean指定了class属性,就将要求Spring IoC容器调用构造程序创建Bean实例. 1.3.3 工作原理假定你打算开发一个在线销售产品的购物应用程序.首先,你创建一个Product类,这个类有多个属性,比如产品名称和价格.因为商店中有许多类型的产品,所以你定

.net 如何调用 TIBCO创建的 WSDL?

问题描述 TIBCO创建的WSDL和.NET创建的结构不一样,请问有什么方法可以解决? 解决方案 解决方案二:顶一顶!!!!!

com组件pb-PB 8.0调用C#写的com组件出现对象创建失败

问题描述 PB 8.0调用C#写的com组件出现对象创建失败 PB 8.0调用C#写的com组件出现对象创建失败,请问是不是com组件有什么问题?PB的调用代码绝对没错,组件注册能够成功. 解决方案 你的C#代码设置ComVisible(COM可见)为true了么?用regasm注册了么? 解决方案二: VC调用C#写的COM+组件C#创建COM供PB调用C#创建COM供PB调用

调用基于JSON的EST API来创建一个帐户

WebSphere Cast Iron(以下简称 Cast Iron)被广泛用于整个内部和外部应用程序的集成和迁移.过去,大多数基于 SaaS 的应用程序都公开了 REST API,这些 API 用于处理 JSON 数据.然而,Cast Iron 主要处理 XML 和 XML 模式.为了支持有效的 REST API 调用,Cast Iron 引入了两个新活动来处理 JSON 数据. 您可以在调用 REST API (大部分是 SaaS 供应商公开的)的过程中使用 Read JSON 和 Writ

USRP设备创建过程

要使用USRP,程序中必须包含multi_usrp.hpp头文件,该头文件中的multi_usrp类通过给定的地址返回底层的一个usrp设备对象: static sptr make(const device_addr_t &dev_addr); 但看程序可以看到,multi_usrp是一个抽象类,很多函数并没有具体的实现除make()函数以外的所有函数都是纯虚函数.由此,USRP设备对象一定是通过make()函数实现的,来看mulyi_usrp::make()函数的实现: multi_usrp:

《java与模式》----创建模式系列工厂模式、单态模式精讲

创建 创建模式-----Creation  Pattern 创建模式是对类实例化过程的抽象. 一些系统在创建对象的时候需要动态的决定怎样创建对象.创建哪些对象.以及如何组合,表示这些对象.创建模式描述了怎样构造和封装这些动态的决定. 创建模式又分类的创建模式和对象的创建模式. l         类的创建模式:类的创建模式使用继承关系,把类的创建延迟到子类,从而封装了客户端将得到哪些具体类的信息,并隐藏了这些类的实例是如何被创建的和放在一起的.. l         对象的创建模式:对象的创建模