如何修复.Net和COM之间枚举名称的问题(续)

本文介绍了解决.NET程序集与COM组件间调用时出现的“429”错误的方法。通过使用regasm注册工具及一系列部署步骤,如导出TLB文件、编译IDL文件等,实现.NET程序集的正确注册。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     前面我们有一篇“如何修复.Net和COM之间枚举名称的问题”,按照那篇文章的方法做可以解决编译问题,但是运行的时候会出现run-time error “429” , ActiveX不能创建的问题,关键问题是因为.net程序集没有注册的原因造成的,需要通过regasm注册一下就解决了。具体操作步骤是:

    1 编写您需要.net程序

     2 使用以下批处理来导出tlb文件

@echo Off

set binDir="C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin"

%binDir%\tlbexp PCTSEventLog.dll

%binDir%\tlbexp PCTSAuditLog.dll

rem "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Regasm" PCTSEventLog.dll /regfile:PCTSEventLog.reg

rem "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Regasm" PCTSAuditLog.dll /regfile:PCTSAuditLog.reg

Call "C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\OleView.Exe"

rem Pause

 

    3 打开ole view之后,导出idl文件,然后使用下面的命令进行编译

@echo off

Call "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86

set binDir="C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin"

%binDir%\MIDL PCTSEventLog.idl

%binDir%\MIDL PCTSAuditLog.idl

Pause

    4 编译成功之后,将新生成的dll和tlb文件拷贝到目标机器上。然后使用以下命令进行注册,并把程序集加入到GAC(全集共享缓存区):

@echo off

gacutil /i PCTSEventLog.dll

gacutil /i PCTSAuditLog.dll

gacutil /i Interop.ERConnect.dll

regasm PCTSEventLog.dll

regasm PCTSAuditLog.dll

regasm Interop.ERConnect.dll

rem regedit /s PCTSEventLog.reg

rem regedit /s PCTSAuditLog.reg

rem "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regtlibv12" "C:\Work\Bin\Release\Net\PCTSEventLog.tlb"

rem "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regtlibv12" "C:\Work\Bin\Release\Net\PCTSAuditLog.tlb"

rem Regasm PCTSAuditLog.dll /t

rem Regasm PCTSAuditLog.dll /t /u

rem Pause

 

    5 接下来您就可以在COM中调用.net的程序集了。

    7 当多次进行修改调试的时候,您可以使用下面的命令进行反注册:

@echo off

gacutil /u PCTSEventLog

gacutil /u PCTSAuditLog

gacutil /u Interop.ERConnect.dll

Regasm PCTSEventLog.dll /t /u

Regasm PCTSAuditLog.dll /t /u

Regasm Interop.ERConnect.dll /u

rem "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regtlibv12" /u PCTSEventLog.tlb

rem "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regtlibv12" /u PCTSAuditLog.tlb

rem Pause

   一切就大功告成了!!

转载于:https://www.cnblogs.com/LazyBee/archive/2010/12/29/1920912.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值