gpt4 book ai didi

c# - 在 VB6 list 中包含 .NET 程序集?

转载 作者:太空狗 更新时间:2023-10-29 21:46:24 26 4
gpt4 key购买 nike

我正在开发一个 vb6 项目并希望创建一个 list ,因此不需要注册。

我使用 MMM(Make My Manifest)工具扫描您的 VB6 项目的 dll 依赖项并生成 list 。

但是,MMM 不包括 tlb 文件,我有一个 Client.dll 和 Client.tlb 是用 .net 编写的,它们已暴露给 COM 并在我的 VB6 程序中使用。

我不建议你使用 Regasm,因为如果没有注册到注册表就更好了。

我试图通过命令行中的 mt 工具为 'mt.exe -tlb:Client.tlb -dll:Client.dll -out:Client.manifest' 生成单独的 list

然后我想我可以通过以下方式合并 2 个 list :'mt.exe -manifest program.exe.manifest client.manifest -out:program.exe.manifest'

但是,当我运行该程序时,我收到一个消息框,上面写着“运行时错误 -2147220999 (800401f9):自动化错误,Dll 中的错误”

我在上面做的事情是否正确,任何人都有类似的经验,任何帮助表示赞赏。

最佳答案

这里是一个简短的描述如何UMMM这样做:

  1. 首先,对于 .Net dll,它生成一个 list 到临时文件

    mt.exe -nologo -managedassemblyname:"{dotnet_dll}" -nodependency -out:"{dotnet_dll}.manifest"
  2. 然后将此 list 作为 RT_MANIFEST 资源 2 嵌入到 .Net dll 中

    mt.exe -nologo -manifest "{dotnet_dll}.manifest" -outputresource:"{dotnet_dll}";2
  3. 最后通过提取 assemblyIdentity 从 VB6 可执行文件中引用 .Net dll .Net dll list 中的标记并将其添加到 dependency\dependentAssembly 内的无注册 list 中像这样标记

    <dependency>
    <dependentAssembly>
    <assemblyIdentity name="PdfSigner" version="1.0.0.0" processorArchitecture="msil" />
    </dependentAssembly>
    </dependency>

这边clrClass Hans 提到的标记出现在 .Net dll 嵌入式 list 中,而不出现在 VB6 可执行 list 中。

关于c# - 在 VB6 list 中包含 .NET 程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9164660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com