C#写COM组件时,在别的机器上调试注册总出错

anabiosispe 2010-03-15 05:28:38
环境,vs2005,C#,.net2.0
最近用C#写COM组件,用于向C++公开。
程序是没有错的,我在我自己的电脑上,把C#类库项目的项目属性设定为COM可见,编译时为COM interop互操作注册。签名里也加入了snk密钥文件。

在我自己的电脑上调试是没有问题的,写的VC++的客户端完全可以调用COM组件。测试时先用regasm comname /unregister注销了,然后用regasm comname /codebase注册后就可以正常使用。(我只用regasm comname注册的话,客户端好像不能够正常使用com组件)

但是我拿去别的机器上,没有ide了,有.net 2.0,我用regasm comname /codebase注册,也提示注册成功了,但是vc++的客户端程序根本就不能执行。
应该是在别的机器上注册总是有问题,请问有朋友以前写com组件时遇到过这个问题吗,一般com注册的这个问题,都是如何处理的?
望不吝赐教~
...全文
788 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
anabiosispe 2010-05-04
  • 打赏
  • 举报
回复
忘了结贴了
回复#16楼
DNS开了没?
这个我还真是不清楚,不知道是不是需要进入控制面板找到服务里相关的dns服务?
server参数是没有错的,我是传的ipv4格式的ip地址。
honkerhero 2010-03-19
  • 打赏
  • 举报
回复
插一句,测试机上的DNS开了没?是不是你的DNS解析不过去啊,不知道你的server参数传得是什么值。
anabiosispe 2010-03-17
  • 打赏
  • 举报
回复
错误内容是在于这两句语句上
IPHostEntry host = Dns.GetHostEntry(server);
然后我用TCPclient.connect链接host得到的ipaddresslist[0]。
这个地方出错了,在我自己的机器上可以正常运行,在测试机上却不能正常运行。
我把IPHostEntry host = Dns.GetHostEntry(server);这一句改动下,用IPAddress.Parse()方式获得目标的IP地址再链接就没问题了。

我还是不清楚那一句为何会测试通不过。
xingyuebuyu 2010-03-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 honkerhero 的回复:]
网上下个dependency.exe看一下依赖,是不是有依赖于IDE的类啊,目标机器上没有
[/Quote]

按楼上说的做下?你程序是否有使用第三方的其它DLL或类库?
KnowKjava 2010-03-16
  • 打赏
  • 举报
回复
不大明白。帮顶了!
honkerhero 2010-03-16
  • 打赏
  • 举报
回复
网上下个dependency.exe看一下依赖,是不是有依赖于IDE的类啊,目标机器上没有
anabiosispe 2010-03-16
  • 打赏
  • 举报
回复
总是提示错误“由于程序配置错误,未能正常启动"
anabiosispe 2010-03-16
  • 打赏
  • 举报
回复
2#楼的方法我试过了,还是不行。我也能确保dll跟执行exe在相同目录下。
一般看帖子他们说的情况,都没有这么回事,应该regasm注册上了就能运行了的啊。
anabiosispe 2010-03-16
  • 打赏
  • 举报
回复
我单步测试下来,C++的程序里,调用了COM组件里的一个方法。
那个方法里,执行到这两行时,便执行不过去了。(当然是指测试机)
TcpClient client = new TcpClient();
IPHostEntry host = Dns.GetHostEntry(server);
anabiosispe 2010-03-16
  • 打赏
  • 举报
回复
我先分步的测试一下,容后再贴出有问题的代码
xingyuebuyu 2010-03-16
  • 打赏
  • 举报
回复
确认除了没装编译器之外其它的环境都一样了吗?
把出错部分的代码贴出来看看
anabiosispe 2010-03-16
  • 打赏
  • 举报
回复
C#写com组件时,是不是有些函数和类库不能用啊。
我测了一下,我调用com组件里的一个函数时,就出错,调用之前,是不出错的。
但是在我自己写程序的电脑上,无论怎么样都没有错误
anabiosispe 2010-03-16
  • 打赏
  • 举报
回复
我用dependency查了一下,确实有问题,是side by side的问题。这个问题倒是解决了。
不过还是继续碰到了别的问题,dependency查不到问题了,在测试机上运行程序时,提示
"debug error"
"你的程序用一个不正常的方式请求运行时结束任务"

但是这个程序在我的机器上运行却没有问题...
我还得查
mayonglong 2010-03-15
  • 打赏
  • 举报
回复
期待高手出现~
anabiosispe 2010-03-15
  • 打赏
  • 举报
回复
谢谢楼上的主意,明儿我试一下,再来发测试结果
xingyuebuyu 2010-03-15
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20100315/17/8b46df63-437e-4754-90cd-dcc7ea44bce5.html

在你的成功调用COM的电脑上执行
C:\Windows\Microsoft.NET\Framework\v2.0.50727\regasm "C:\Program Files\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll" /regfile:myref.reg

将第2个参数换成你的DLL的全路径,这样会生成一个注册表文件,包含了COM组件的信息,然后到其它电脑上导入此注册表文件.
Return门徒 2010-03-15
  • 打赏
  • 举报
回复
帮顶吧,我也不会啊~!

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧