2012-11-20 71 views
4

我想要获得最简单的注册免费COM项目在64位Windows7中工作! COM组件也是最简单的VB.NET DLL,它在VB6 EXE注册时工作正常。简单的注册与VB6免费COM

任何人都可以提出为什么清单不工作吗?

我已经尝试用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> 
+0

鸡与鸡的问题。 EXE从清单中找到DLL。因此,DLL清单中的条目应属于EXE清单。 –

+0

我不确定这是什么问题。将库信息嵌入到应用程序清单中是一种捷径,我不确定微软甚至在任何地方记录了这些信息。单独的程序集清单是更“正常”的情况。即使是古代(〜2004年)的MMM实用程序版本也可用于创建单独的装配清单,并且它们正常工作。 – Bob77

+0

您是否缺少程序集清单中的''指令? – Bob77

回答

2

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

我成功地使用RegFree Com,一旦您拥有清单权限,它为我节省了无数的头痛。我没有嵌入它们。我使用迷宫软件的Side-by-Side Manifest Maker这个,他们非常有帮助,非常值得投资。我粘贴了应用程序清单和其中一个DLL的清单给你一个工作示例。

文件名= 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> 

文件名= MyNetComWrapper.Manifest(注意一个.dll的abscense。标签)

<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> 
+0

编辑链接到迷宫软件产品,听起来很有用。 – MarkJ

+0

有趣的答案,将进一步看这个。虽然示例中使用的.NET interop可能会混淆OP,因为他的问题(我不认为)与.NET程序集有任何关系。 – tcarvin

+0

@tcarvin再次阅读OP的问题,然后:-) – Dabblernl