小编use*_*144的帖子

根据应用程序运行的位数加载 32 位或 64 位并行 COM DLL

我有一个使用 COM DLL 的 .NET 应用程序,其中有 32 位和 64 位版本。我编写了两个应用程序清单,使并行 COM 互操作可以在 32 位或 64 位上工作。这里是 32 位版本:

<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
  <assemblyIdentity name="MyApp" version="1.0.0.0" type="win32" />
  <dependency>
    <dependentAssembly>
      <assemblyIdentity 
           type="win32" 
           name="MyCOMDll_32.dll" 
           version="1.2.3.4" 
           processorArchitecture="x86" 
           publicKeyToken="0000000000000000"
           language="*" />
    </dependentAssembly>
  </dependency>
</assembly>
Run Code Online (Sandbox Code Playgroud)

但是,维护两个清单会导致可移植性的损失:您需要在安装应用程序时决定使用哪个版本。并且64位应用程序无法再在32位模式下运行。

是否有可能让 .NET 应用程序根据其运行位数加载正确的 32 位或 64 位 DLL?我尝试使用两个依赖元素,一个 with <assemblyIdentity processorArchitecture="x86" .../>,一个 with <assemblyIdentity processorArchitecture="amd64" .../>,但这会导致应用程序配置错误。

我将非常感谢您的回答。问候,莫里茨

manifest com-interop side-by-side

5
推荐指数
1
解决办法
1166
查看次数

标签 统计

com-interop ×1

manifest ×1

side-by-side ×1