4

我正在尝试让最简单的免费注册 COM 项目在 64 位 Windows7 中工作!COM 组件也是最简单的 vb.NET DLL,它在注册时可以在 VB6 EXE 中正常工作。

谁能建议为什么清单不起作用?

我已经尝试使用 mt.exe 更新任何 VB6 内部清单,但一般错误表明 Project2.exe 中没有内部清单

VB6 程序 (Project2.exe) 清单是....

    <assemblyIdentity name="Project2.exe" version="1.0.0.0" type="win32"    processorArchitecture="x86"/>

    <dependency>
     <dependentAssembly>
      <assemblyIdentity name="ClassLibrary1" version="1.0.0.0" type="win32"/>
     </dependentAssembly>
    </dependency>

    </assembly>

DLL(ClassLibrary1.dll)清单是......

    <assemblyIdentity name="ClassLibrary1" version="1.0.0.0" type="win32"/>

    <clrClass
       name="ClassLibrary1.Class1"
       clsid="{D9531C2A-3822-4222-8D45-BC507FCDF5F3}"
       progid="ClassLibrary1.Class1"
       threadingModel="Both"/>

    <file name="ClassLibrary1.tlb">
     <typelib
         tlbid="{DA8A00C1-1E14-4295-AEDE-F8F23DD8E43D}"
         version="1.0"
         helpdir=""
         flags="hasdiskimage"/>
    </file>

    </assembly>
4

1 回答 1

2

假设 Id 是正确的,清单是正确的。所以你的问题是别的。你得到什么错误信息?

我成功地使用了 RegFree Com,一旦您拥有正确的清单,它就为我省去了无数麻烦。我不嵌入它们。为此,我使用了 Maze 软件的Side-by-Side Manifest Maker,它们非常有用,非常值得投资。我粘贴了应用程序清单和其中一个 dll 的清单,为您提供了一个工作示例。

Filename=MyVB6App.exe.Manifest(注意 .exe. 标签)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

<assemblyIdentity name="MyVB6App.exe" version="2.8.0.127" type="win32" processorArchitecture="x86"/>
<description>Built with: Side-by-Side Manifest Maker (3.7.1.4434) (x86)</description>

<dependency>
 <dependentAssembly>
  <assemblyIdentity name="MyNetComWrapper" version="1.0.24.0" type="win32" publicKeyToken="6ABF096D69195FE6"/>
 </dependentAssembly>
</dependency>

</assembly>

Filename=MyNetComWrapper.Manifest(注意 .dll.tag 的缺失)

<assemblyIdentity name="MyNetComWrapper" version="1.0.24.0" type="win32" publicKeyToken="6ABF096D69195FE6"/>

<description>Built with: Side-by-Side Manifest Maker (3.7.1.4434) (x86)</description>

<clrClass
   name="MyComNetWrapper.SomeClass"
   clsid="{A68F56A1-8425-3E06-BA83-856EC8422F5B}"
   progid="MyComNetWrapper.SomeClass"
   runtimeVersion="v4.0.30319"
   threadingModel="Both"/>
<clrClass
   name="MyComNetWrapper.SomeOtherClass"
   clsid="{D5156DAF-0421-36AE-84B6-5D915068B2DC}"
   progid="MyComNetWrapperc.SomeOtherClass"
   runtimeVersion="v4.0.30319"
   threadingModel="Both"/>

<file name="MyComNetWrapper.tlb">
 <typelib
     tlbid="{D189D056-66F1-4C01-8EB9-1F95BA11254A}"
     version="1.0"
     helpdir=""
     flags="hasdiskimage"/>
</file>

</assembly>
于 2012-11-21T07:46:00.103 回答