Vb.net x86程序希望访问任何CPU而不是x86

Vb.net x86程序希望访问任何CPU而不是x86,vb.net,ms-access,x86,anycpu,subproject,Vb.net,Ms Access,X86,Anycpu,Subproject,我对AnyCPU vs x86编译器设置有一些问题,但如果我理解的话 正确地说,我的问题似乎与正常情况相反 目前,所有内容都驻留在带有Visual Studio 2010的Win 7 64位计算机上。所讨论的应用程序是Dot.NET 3.5。 VisualStudio是用英语编写的,但部分错误是用操作系统的语言德语编写的 项目E:主要项目/解决方案,包括3个子项目,2个作为DLL,1个作为exe。VB.net 3.5,编译为x86,因为它需要OleDB访问。 最初是在WinXP的32位机器上的

我对AnyCPU vs x86编译器设置有一些问题,但如果我理解的话 正确地说,我的问题似乎与正常情况相反

目前,所有内容都驻留在带有Visual Studio 2010的Win 7 64位计算机上。所讨论的应用程序是Dot.NET 3.5。 VisualStudio是用英语编写的,但部分错误是用操作系统的语言德语编写的


项目E:主要项目/解决方案,包括3个子项目,2个作为DLL,1个作为exe。VB.net 3.5,编译为x86,因为它需要OleDB访问。 最初是在WinXP的32位机器上的VS2008甚至VS2005上启动的。

项目ADB:vb.net exe,需要能够独立启动,并且我需要能够从项目E访问表单。 这是作为一个单独的项目开始的,我的项目在VS 2010中是Dot.Net 4.0,但如果相关的话,我认为它仍然在32位机器/WinXP上。
需要OLEDB才能访问MS,因此独立的exe必须是x86。
但是,如果将其编译为x86(项目属性>编译>高级编译选项)作为解决方案的一部分,则会出现生成错误(请参见下文)。如果我改为AnyCPU,它将作为解决方案的一部分工作,包括访问OleDB(这应该意味着它是x86,对吧?),但单机版不能再使用OleDB(这意味着它不是x86,对吧?)。

项目Au:vb.net DLL,包含在E的参考中,不需要OleDB。如果编译为x86,我会得到与项目ADB中相同的错误。如果编译为AnyCPU,则可以工作。 已添加到32位计算机上的VS 2008中。

项目S:C#DLL,不需要OleDB。编译为x86,并包含在E的参考文献中,这本书非常有用。 是从web下载的,添加到32位机器上的VS2008中。

生成错误如下:
模具日期顺序组件“file:///X:/Entw/E/VB.net/ADB/bin/Debug/ADB.exe“为了让我们的生活更美好。这是一个很好的例子,但它是一个很好的例子
翻译成:
无法加载文件或程序集“XYZ”或其依赖项之一。试图加载格式不正确的程序。

作为AnyCPU单机版启动ADB时出现的OleDb错误如下:
在“Microsoft.Jet.OLEDB.4.0”中,提供程序不支持lokalen计算机注册表。
这是常见的no-64位JET错误警告:
“Microsoft.Jet.OLEDB.4.0”提供程序未在本地计算机上注册。

现在,据我所知,通常情况下,如果主项目是AnyCPU,而子项目是特定的,我会得到构建错误,因为 它将尝试从任何CPU(在本例中为x64)访问x86。 但是在这里,我尝试从x86访问x86,这不起作用,但是从x86访问任何CPU(应该是x64)都起作用

如有必要,我可以提供更多信息和所有配置文件等

很抱歉,如果我写得很混乱,但我对这个问题非常困惑。

您应该设置

但我猜您的解决方案配置不正确。 在VisualStudio2010中,右键单击解决方案,然后单击“属性”(“特征值”)。选择“配置属性”(“Konfigurationseingenschaften”)并确保所有项目都将以
x86
的方式构建


如果您计划提供64位版本的应用程序,我建议您创建不同的构建概要文件。您可以通过单击解决方案属性中的“配置管理器”来执行此操作。在“活动平台配置”下选择“”,选择“x64”,从“x86”复制设置并启用“创建新项目平台”。然后浏览列表,确保所有项目都以x64的形式构建在这个配置中。

好的,我现在找到了。问题是错误消息并没有真正的帮助

在输出中挖掘发现特定表单上的resgen.exe存在问题。
在Google和VS命令行中进一步挖掘发现,它试图获取错误的System.Forms.dll:
意识到这一点,我在表单上使用了一个ImageList。

对于EXE,您应该避免使用任何CPU;对于程序集,您应该使用任何CPU:
“任何CPU对于DLL仍然非常有价值(您可能并不总是知道它将加载到什么进程)”
对于所有引用第三方库的程序集,您应该避免使用任何CPU,这个问题就是这样。在本例中,OleDb get被绑定到一个AnyCPU DLL中。在x86机器上引用它应该是可行的,但在x64系统上引用它是行不通的!AnyCPU应仅用于引用使用AnyCPU编译的库的库。解决方案属性>配置属性>所有设置均设置为x86。(实际上,不同的子项目仍然设置为上面的相应值)。问题是,如果我避免使用任何CPU(例如,使用x86),就会出现编译器错误(无法加载文件或程序集“XYZ”或其依赖项之一。试图加载格式不正确的程序。)@MattWilko我仍然存在此问题。上面的所有内容似乎都已正确配置,但如果我想构建整个解决方案,我仍然需要将ADB项目设置为AnyCPU。@mano-我猜您的解决方案中有一个被引用的dll(可能是第三部分程序集),该dll设置为x64,并且您正在尝试使用x86?