可能是重复问题:
Loading x86 or x64 assembly
我正在尝试编译Any CPU .NET项目,但我需要链接SQLite库,该库在x86和x64平台上有不同版本。仅将DLL版本更改为x64无法解决问题,应用程序无法启动,我需要使用x64引用重新编译代码。 当我添加x86和x64两种引用时,由于冲突而无法编译。 我不能使用x86编译应用程序,因为我正在使用的其中一个系统COM库在WOW64下无法工作。
所有32位VSS应用程序(请求器、提供程序和编写者)必须作为本机32位或64位应用程序运行。在WOW64下运行它们不受支持
因此,我需要构建Any CPU项目,但我目前看到的此问题的唯一解决方案是针对x86和x64制作重复项目。是否还有更好的解决方法?
更新
当我在项目中引用x64库,但尝试加载x86库时,会收到以下异常。
The located assembly's manifest definition does not match the assembly reference.
SetDllDirectory
使操作系统查找正确的文件夹,具体取决于位数。或者像Rover建议的那样使用AppDomain.CurrentDomain.AssemblyResolve
事件。您不直接引用这些库,而是使用SQLite托管封装器来做到这一点。您的代码将使封装器加载底层本机库的正确版本。 - GSerg