如何在没有 RegAsm.exe 的情况下注册类型库
Posted
技术标签:
【中文标题】如何在没有 RegAsm.exe 的情况下注册类型库【英文标题】:How to Register a Type Library without RegAsm.exe 【发布时间】:2010-03-03 22:44:43 【问题描述】:我想知道是否可以在不使用RegAsm tool 的情况下注册类型库。这是我的情况,希望能解释我为什么要这样做:
我正在用 .NET 开发一个程序集,它将为我们较旧的 VB6 应用程序提供一些现代功能。我已经使用 RegAsm 在我的开发机器上成功注册了程序集和类型库,如下所示:
regasm.exe MyAssembly.dll /tlb /codebase
上述命令生成类型库(MyAssembly.tlb)并注册它以及注册程序集。我需要注册类型库,以便我可以在 VB6 中使用 Intellisense。
我对这个方法的问题是我在生成类型库文件时没有像使用TlbExp.exe 那样的控制级别。特别是,我需要使用 TlbExp 的 /names 标志来specify the proper case 我的属性名称(RegAsm 屠宰它们)。那么如果我使用 TlbExp 来生成我的 tlb 文件,有什么方法可以将它与程序集注册过程分开注册吗?
编辑: da_m_n 的回答对于我提出的问题是正确的。但是,我错误地假设,仅仅因为 RegAsm 可以注册一个类型库,就必须注册 tlb 以便在 VB6 中引用它。所以现在我正在注册程序集并使用固定名称引用未注册的、由 TlbExp 生成的 tlb。
【问题讨论】:
实际上,我认为我必须注册 tlb 文件才能在 VB6 中引用它的假设可能是错误的。也许这个问题是没有意义的。我明天再看看。 现在我在我的电脑上找不到regtlib.exe。我可以找到regtlibv12.exe,但根本没有文档。在我看来,MS 不再热衷于 .NET。 【参考方案1】:使用regtlib.exe注册tlbexp生成的tlb文件。
【讨论】:
【参考方案2】:regtlib.exe
在 Win10 平台上不可用。使用相应的 .NET SDK 中的适当 TlbExp.exe
(例如 "%ProgramFiles(x86)%\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 Tools\TlbExp.exe" "$(TargetDir)$(TargetFileName)"
see https://docs.microsoft.com/en-us/dotnet/framework/tools/tlbexp-exe-type-library-exporter)。
【讨论】:
Tlbexp.exe 生成类型库但不注册它。这与生成和注册类型库的程序集注册工具 (Regasm.exe) 形成对比。要使用 COM 生成和注册类型库,请使用 Regasm.exe。 @EduBic,很好的洞察力,...但是在构建机器上,可执行文件不运行,只是打包,可能只需要构建类型库。以上是关于如何在没有 RegAsm.exe 的情况下注册类型库的主要内容,如果未能解决你的问题,请参考以下文章
RegAsm.exe无法通过installshield 2016注册Dll
如何在 Visual Studio 2008 安装项目中使用 regasm 注册 .NET CCW
C# COM DLL:我使用 Regasm 还是 Regsvr32?