5

背景。我有一个用 C# 编写的名为 ComWrapper.dll 的 COM Wrapper 程序集,以及名为 Project1.exe 的 Visual Basic 6 应用程序。我添加了 Project1.exe.manifest 文件(其内容如下所示),我收到一条错误消息,提示“应用程序无法启动,因为它的并排配置不正确。这是我的配置.

<?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>

任何帮助将非常感激。

4

2 回答 2

6

您需要使用 sxstrace.exe 来确定错误的实际原因,因为(完整)错误消息文本会告诉您这样做。这是错误的:

信息:解析清单文件

C:\Temp\sxs\Project1.exe.Manifest。

信息:清单定义标识是 Project1.exe,processorArchitecture="x86",type="win32",version="1.0.0.0"。

信息:参考:ComWrapper,processorArchitecture="msil",version="1.0.0.0"

错误:第 9 行:元素 clrClass 显示为元素 urn:schemas-microsoft-com:asm.v1^dependentAssembly 的子元素,此版本的 Windows 不支持。

问题是dependentAssemblyelement 不应该提供程序集的完整描述 - 它仅用于指示参考。您必须为该程序集提供一个单独的组件清单文件,然后通过clrClass. 这在此 MSDN 文章中有更详细的描述。

于 2010-07-07T22:58:28.460 回答
0

此错误可能是由于配置文件中的拼写错误。检查您的 app.config 文件并查找拼写错误。

于 2019-10-21T19:33:03.627 回答