3

我有一个需要访问 .NET 程序集的应用程序(Delphi Native 代码)(公开了一些 COM 类。我想使用并排程序集和清单来执行此操作。我已经使用测试 .NET 程序集完成了此操作,但是我我需要访问的程序集有问题。

注册程序集后,我可以实例化 COM 类。一旦我取消注册程序集并尝试并排访问,我就会收到上述错误。我的本机应用程序有一个应用程序清单,它对程序集有一个简单的依赖关系。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity type="win32"
                    name="TestApplication.exe"
                    version="1.0.0.0"/>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        name="TestAssembly"
        version="1.0.0.0"
        processorArchitecture="x86"
        publicKeyToken="xxxxxxxxxxxxxxxx"
        type="win32"/>
    </dependentAssembly>
  </dependency>
</assembly>

我作为资源嵌入到我的 .net 程序集中的程序集清单如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
    name="TestAssembly"
    version="1.0.0.0"
    processorArchitecture="x86"
    publicKeyToken="xxxxxxxxxxxxxxxx"
    type="win32"/>
  <clrClass
    clsid="{F3F1623D-DB4A-4152-9A5D-5A465AD3A318}"
    progid="TestAssembly.MyObject"
    threadingModel="Both"    
    name="TestAssembly.MyObject"
    runtimeVersion="v2.0.50727">
  </clrClass>
  <file name="TestAssembly.dll">
  </file>
</assembly>     

清单似乎设置正确。如果我更改应用程序清单的依赖项名称、版本或公钥令牌(示例中的那个不是我的代码中的那个),我会收到关于应用程序配置不正确的常见 SxS 错误。

我在另一个(诚然更简单的).NET 程序集上工作,但无法弄清楚出了什么问题。问题是我不确定错误是什么意思。

4

1 回答 1

4

要生成 .Net 程序集清单,请mt.exe像这样使用

c:>mt.exe -nologo -managedassemblyname:"your_binary.dll" -nodependency -out:"temp_file.manifest"
c:>mt.exe -nologo -manifest "temp_file.manifest" -outputresource:"your_binary.dll";2

然后打开 temp_file.manifest 并assemblyIdentity逐字复制dependency\dependentAssembly您的 delphi 可执行清单的标记下的标记。

仅供参考:您必须将可执行文件和所有相关的 .net dll 保存在同一个文件夹中。

于 2010-11-03T17:03:46.630 回答