免费注册COM Interop:应用程序无法启动,因为其并排配置不正确
背景。我有一个用C#编写的COM Wrapper程序集,叫做ComWrapper.dll,Visual Basic 6程序叫做Project1.exe。我添加了Project1.exe.manifest文件(其内容如下所示),并且出现一个错误消息,指出“应用程序启动失败,因为它的并排配置不正确。这是我的配置。免费注册COM Interop:应用程序无法启动,因为其并排配置不正确
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32"
name="Project1.exe"
version="1.0.0.0"
processorArchitecture="x86" />
<dependency>
<dependentAssembly>
<assemblyIdentity name="ComWrapper" version="1.0.0.0" processorArchitecture="msil"></assemblyIdentity>
<clrClass clsid="{3ac3d04e-1f83-4a27-b516-95e38126685d}" progid="MyComObjectNamespace.myclass" threadingModel="Both" name="MyComObjectNamespace.myclass" runtimeVersion=""></clrClass>
<file name="ComWrapper.dll" hashalg="SHA1"></file>
<dependency>
<dependentAssembly>
<assemblyIdentity name="mscorlib" version="2.0.0.0" publicKeyToken="b77a5c561934e089"></assemblyIdentity>
</dependentAssembly>
</dependency>
</dependentAssembly>
</dependency>
</assembly>
任何帮助将非常感激。
您需要使用sxstrace.exe确定错误的真正原因,因为(完成)错误消息文本告诉你这样做。这就是它是错误的:
INFO: Parsing Manifest File
C:\Temp\sxs\Project1.exe.Manifest.
INFO: Manifest Definition Identity is Project1.exe,processorArchitecture="x86",type="win32",version="1.0.0.0".
INFO: Reference: ComWrapper,processorArchitecture="msil",version="1.0.0.0"
ERROR: Line 9: The element clrClass appears as a child of element urn:schemas-microsoft-com:asm.v1^dependentAssembly which is not supported by this version of Windows.
问题是,dependentAssembly
元素不应提供程序集的完整说明 - 仅用于指示参考。您必须为该程序集提供单独的组件清单文件,然后通过clrClass
描述导出的COM类。这在this MSDN article中有更详细的描述。