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

时间:2016-11-01 13:30:25

标签: c# .net web-services

是否可以将32位和64位dll组合在同一个.net项目中? 我收到这个错误:

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

2 个答案:

答案 0 :(得分:0)

实际上,可以在同一个项目中添加/使用此类程序集。

不可能的是加载在运行时具有不匹配架构的程序集,但在代码中相对容易处理 - 检查架构只使用来自相应程序集的类。

答案 1 :(得分:0)

如果仅使用托管程序集,请指定任何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

检查架构