使用包含32位和64位程序集的项目运行.net web服务

本文关键字:运行 项目 net web 服务 程序集 包含 32位 64位 | 更新日期: 2023-09-27 18:15:58

是否有可能在同一个。net项目中组合32位和64位dll ?我得到这个错误:

An attempt was made to load a program with an incorrect format

使用包含32位和64位程序集的项目运行.net web服务

确实可以在同一个项目中添加/使用这样的程序集。

不可能在运行时加载结构不匹配的程序集,但在代码检查体系结构中相对容易处理,只使用相应程序集的类。

如果只使用托管程序集,请指定Any CPU平台目标。

如果您通过[DllImport]只使用项目中的本地库-只需以不同的名称将它们包含到您的项目中,例如native.x86.dllnative.x64.dll,并选择合适的类似代码:

[DllImport("native.x86.dll")]
public static extern int ExtrernalFunc86();
[DllImport("native.x64.dll")]
public static extern int ExtrernalFunc64();
// ....
if (IntPtr.Size == 8) return ExternalFunc64();
else return ExternalFunc86();

如果您使用针对特定CPU(具有相同API)的托管库,您可以引用其中一个,但将两者复制到输出文件夹(使用构建脚本)并通过AppDomain.CurrentDomain.AssemblyResolve事件(使用IntPtr.Size检查架构)选择适当的版本