C# 是否在VB6清单中包含.NET程序集?
我正在处理一个vb6项目,希望创建一个清单,因此不需要注册 我使用MMM(生成清单)工具扫描VB6项目中的dll依赖项并生成清单 但是,MMM不包括tlb文件,我在.net中编写了一个Client.dll和Client.tlb,它已公开给COM并在VB6程序中使用 我不希望您使用Regasm,因为如果没有注册到注册表,那就太好了 我试图通过命令行中的mt工具为生成单独的清单,“mt.exe-tlb:Client.tlb-dll:Client.dll-out:Client.manifest” 然后我想我可以通过以下方式合并2个清单:'mt.exe-manifest program.exe.manifest client.manifest-out:program.exe.manifest' 但是,当我运行程序时,我会收到一个消息框,上面写着“运行时错误-2147220999(800401f9):自动错误,Dll中的错误”C# 是否在VB6清单中包含.NET程序集?,c#,com,vb6,manifest,C#,Com,Vb6,Manifest,我正在处理一个vb6项目,希望创建一个清单,因此不需要注册 我使用MMM(生成清单)工具扫描VB6项目中的dll依赖项并生成清单 但是,MMM不包括tlb文件,我在.net中编写了一个Client.dll和Client.tlb,它已公开给COM并在VB6程序中使用 我不希望您使用Regasm,因为如果没有注册到注册表,那就太好了 我试图通过命令行中的mt工具为生成单独的清单,“mt.exe-tlb:Client.tlb-dll:Client.dll-out:Client.manifest” 然后
我是否正确地完成了上述工作,是否有人有过类似的经验,是否有人愿意帮助我。以下是一个简短的说明:
mt.exe -nologo -managedassemblyname:"{dotnet_dll}" -nodependency -out:"{dotnet_dll}.manifest"
mt.exe -nologo -manifest "{dotnet_dll}.manifest" -outputresource:"{dotnet_dll}";2
assemblyIdentity
标记并将其添加到dependency\dependentAssembly
标记中,从VB6可执行文件中引用.Net dll,如下所示
<dependency>
<dependentAssembly>
<assemblyIdentity name="PdfSigner" version="1.0.0.0" processorArchitecture="msil" />
</dependentAssembly>
</dependency>
这样,Hans提到的
clrClass
标记将出现在.Net dll嵌入清单中,而不是VB6可执行清单中。A[ComVisible]。Net程序集需要清单中的
元素。VB6工具不知道如何做到这一点。合并清单的最佳方法是使用文本编辑器。写一个:嗨,wqw,现在program.exe清单似乎拾取了Client.dll嵌入清单。但现在我在一个消息框中看到一个错误,上面写着:运行时错误'-2146234341'(801310B)自动化错误。因此,我认为这可能是与client.dll代码相关的问题,但当我使用client.dll执行regasm时,program.exe可以工作。com Client.dll使用并引用了另外两个.net dll、.A.dll和一个B.dll,这两个dll也与program.exe位于同一目录中。有什么想法吗?你有没有把Client.dll所依赖的网络dll和VB6可执行文件放在同一个文件夹中?几乎可以肯定,您的错误是一个简单的路径查找错误。使用fuslogvw.exe(来自windows7.1 SDK)和sxstrace.exe对此进行故障排除。