在VB6清单中包括.NET程序集
本文关键字:NET 程序集 单中包 VB6 | 更新日期: 2023-09-27 18:22:37
我正在处理一个vb6项目,希望创建一个清单,因此不需要注册。
我使用MMM(Make My Manifest)工具扫描您的VB6项目的dll依赖项并生成清单。
然而,MMM不包括tlb文件,我有一个在.net中编写的Client.dll和Client.tlb,它已经公开给COM,并在我的VB6程序中使用。
我不建议你使用Regism,因为如果不注册就好了。
我试图通过命令行中的mt工具"mt.exe-tlb:Client.tlb-dll:Client.dll-out:Client.manifest"为生成一个单独的清单
然后我想我可以通过合并2个清单:"mt.exe-manifest program.exe.manifest client.manifest-out:program.exe.manfest"
然而,当我运行程序时,我会收到一个消息框,上面写着"运行时错误-2147220999(800401f9):自动化错误,Dll中的错误"
我以上做得对吗,任何有类似经历的人,任何帮助都表示感谢。
以下是UMMM如何做到这一点的简短描述:
-
首先,对于.Net dll,它使用这个生成一个临时文件的清单
mt.exe -nologo -managedassemblyname:"{dotnet_dll}" -nodependency -out:"{dotnet_dll}.manifest"
-
然后将此清单作为RT_manifest资源2嵌入到.Net dll中
mt.exe -nologo -manifest "{dotnet_dll}.manifest" -outputresource:"{dotnet_dll}";2
-
最后从VB6可执行文件中引用.Net dll,方法是从.Net dll清单中提取
assemblyIdentity
标签,并将其添加到dependency'dependentAssembly
标签内的reg free清单中,如所示<dependency> <dependentAssembly> <assemblyIdentity name="PdfSigner" version="1.0.0.0" processorArchitecture="msil" /> </dependentAssembly> </dependency>
通过这种方式,Hans提到的clrClass
标记出现在.Net dll嵌入清单中,而不是VB6可执行清单中。