如何正确注册VB.NET COM的类型库+;组件?
我希望将旧版VB6 COM+组件升级为VB.NET组件。我似乎已经升级了一个名为EventPackage的类,它有一个类IEventListener。另一个是TradeOrders,如何正确注册VB.NET COM的类型库+;组件?,vb.net,vb6,com+,Vb.net,Vb6,Com+,我希望将旧版VB6 COM+组件升级为VB.NET组件。我似乎已经升级了一个名为EventPackage的类,它有一个类IEventListener。另一个是TradeOrders,实现EventPackage.IEventListener。在尝试构建TradeOrder时,我收到以下错误/警告 无法加载引用“EventPackage”的类型库。图书馆未注册。(HRESULT的例外情况:0x8002801D(类型_E_LIBNOTREGISTERED)) 找不到引用的组件“EventPackag
实现EventPackage.IEventListener
。在尝试构建TradeOrder时,我收到以下错误/警告
<COMReference Include="EventPackage">
<Guid>{0D76C094-21A6-4E04-802B-6E539F7102D7}</Guid>
<Lcid>0</Lcid>
<VersionMajor>2</VersionMajor>
<VersionMinor>0</VersionMinor>
<WrapperTool>tlbimp</WrapperTool>
</COMReference>
{0D76C094-21A6-4E04-802B-6E539F7102D7}
0
2.
0
tlbimp
在注册表中搜索此Guid时,未找到任何内容。当为类似的COM+对象使用GUID时,我在HKEY\U CLASSES\U ROOT\CLSID\{…}\TypeLib
(“..”是另一个组件的GUID)中找到它们。当我转到与EventPackage.IEventListener对应的注册表项名称时,我发现没有\TypeLib
子项。正如您可能怀疑的那样,在注册表中搜索“0D76C094-21A6-4E04-802B-6E539F7102D7”不会产生任何结果
所以我知道这一定是一个注册表问题,但我似乎已经尝试了我找到的每一个谷歌结果。我试过Regasm和regsvcs.exe,但没有用。很多页面都告诉我,将dll拖到COM+管理器应该会自动注册组件
那么如何注册类型库呢
有关如何制作EventPackage COM+组件的详细信息
导入System.Data.SqlClient
用于强名称
(其中“…”是旧组件的COM+CLSID)导入系统.企业服务
(其中…是正确的COM+CLSID,这是唯一的参数)
继承ServicedComponent
我昨天遇到了dam错误(0x8002801D(TYPE_E_libnotregisted)),这让我抓狂:
这可能是在转移视线,但我的回答中有关于注册密钥不存在的类似细节,等等:
右键单击Visual Studio(2010)>以管理员身份运行>打开项目>编译!控制台命令“regsvr32 mydll.dll”将注册您的COM组件。然后您应该能够在HKEY_CLASSES_ROOT\CLASSID下找到guid,InprocServer32文件夹将在该guid下具有指向您的dll的路径。COM就是这样查找dll的。我认为这里的问题是您尚未为.NET组件生成类型库。我知道您说过您使用但是你使用了正确的命令行吗
- 开始菜单=>程序=>Microsoft.NET Framework SDK vX.Y=>SDK命令提示符
- 在此命令行中,键入:regasm/tlb:Mydll.dll
我使用的是Windows XP,Visual Studio 2008。以管理员身份运行。我已选中“注册COMInterop”。因此,当我第一次遇到错误时,我说“错误RA0000:未指定任何输入文件。然后我尝试了regasm EventPackage.dll/tlb:EventPackage.dll
。这导致了错误错误RA0000:保存导出的类型库时出错:访问被拒绝。(HRESULT的异常:0x80070005(E_ACCESSDENIED))
。我已尝试删除旧tlb,停止iis,关闭所有dev/ie/iis工具,但错误持续。我正在获取错误EventPAckage.dll,但未找到DllRegisterServer入口点。无法注册此文件。
。我正在查找其他StackOverflow问题以解决此问题。