我有一个使用 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>
但是,维护两个清单会导致可移植性的损失:您需要在安装应用程序时决定使用哪个版本。并且 64 位应用程序不能再在 32 位模式下运行。
是否有可能让 .NET 应用程序根据其运行的位数加载正确的 32 位或 64 位 DLL?我尝试使用两个依赖元素,一个 with<assemblyIdentity processorArchitecture="x86" .../>
和一个 with <assemblyIdentity processorArchitecture="amd64" .../>
,但这会导致应用程序配置错误。
我将非常感谢您的回答。问候,莫里茨