C# 使用64位project-.NET中的32位库

C# 使用64位project-.NET中的32位库,c#,.net,x86,C#,.net,X86,我们的应用程序都是64位的。我们为第三方数据库(nexusdb)提供了ADODB。它是32位的,由.NET库(我们很好地引用了它)和32位的C.dll组成。所以,当我们在32位编译时,它可以工作,在64位编译时,它会抱怨找不到C.dll 我们如何在不将代码编译为32位的情况下解决这个问题 编辑: 第三方DLL如下所示: ADONET.dll-这是我引用的.NET本机dll,它引用得很好。 ADONETProvider.dll-这是我刚刚保存在bin/文件夹中的非.NET 32位dll 我不想为x

我们的应用程序都是64位的。我们为第三方数据库(nexusdb)提供了ADODB。它是32位的,由.NET库(我们很好地引用了它)和32位的C.dll组成。所以,当我们在32位编译时,它可以工作,在64位编译时,它会抱怨找不到C.dll

我们如何在不将代码编译为32位的情况下解决这个问题

编辑:

第三方DLL如下所示: ADONET.dll-这是我引用的.NET本机dll,它引用得很好。 ADONETProvider.dll-这是我刚刚保存在bin/文件夹中的非.NET 32位dll

我不想为x86编译我的项目,因为我引用了许多其他项目,它们都是64


我想确保ADONET.dll以某种方式在“32位模式”下被调用

您必须使用某种代理进程和IPC从64位进程访问32位dll

不久前,我写了一个项目,它将这个隐藏在一个简单的API调用后面。您可能需要查看以了解技术详细信息


编辑:

为什么不试试下面的一些
1
更改
CopyLocal=false
设置所有第三方dll的
=true
第二个
尝试的另一件事是创建一个
Dependencies
文件夹,将所有第三方dll放在那里,并将它们添加到项目中
引用
节点最后,您可以将项目构建更改为
x86
AnyCpu
I发布编辑。我知道我需要复制非.NET dll并设置为x85。我不想设置为x86。AnyCpu不工作。这是.NET,不确定它有什么不同。.NETDLL提供了引用,工作正常,但在必须进入非托管代码时失败。请参阅我的EDITLegacyWrapper正是为了达到这个特定目的。但是,您不能再将dll添加到项目的引用中。您必须像这样手动加载它:
intx=(int)client.Invoke(“User32.dll”、“GetSystemMetrics”、新对象[]{0})