我对AnyCPU vs x86编译器设置有一些问题,但是如果我理解的话 正确地说,我的问题似乎是正常情况。
目前,一切都在使用Visual Studio 2010的Win 7 64位计算机上运行。有问题的应用程序是Dot.NET 3.5。 Visual Studio是英文版,但错误的一部分是德语,它是操作系统的语言。
项目E:主要项目/解决方案,包括3个子项目,2个为DLL,1个为exe。 VB.net 3.5,编译为x86,因为它需要OleDB访问。
最初在WinXP的32位机器上开始使用VS 2008甚至VS 2005。
项目亚行:vb.net exe,需要可以独立启动,我需要能够从项目E访问表单。
这开始是一个单独的项目,我在VS 2010中一直是Dot.Net 4.0,但我认为如果这是相关的话,它仍然在32位机器/ WinXP上。
需要OledDB到MS Access,因此独立的exe需要是x86
但是如果我将其编译为x86(项目属性>编译>高级编译选项)作为解决方案的一部分,我会遇到构建错误(见下文)。如果我改为AnyCPU,它可以作为解决方案的一部分,包括访问OleDB(这应该意味着它是x86,对吧?),但是独立的不再使用OleDB(这意味着它不是x86,对吧?) 。
项目Au:vb.net DLL,包含在E的引用中,不需要OleDB。如果编译为x86,我会得到与项目ADB中相同的错误。编译为AnyCPU时工作。
在32位机器上添加到VS 2008中。
Project S:C#DLL,不需要OleDB。编译为x86并包含在E的引用中,这是有效的。
是从网上下载,在32位机器上添加到VS 2008。
构建错误如下:
Die Datei oder Assembly“file:/// X:/Entw/E/VB.net/ADB/bin/Debug/ADB.exe”odereineAbhängigkeitdavonwurde nicht gefunden。 Es wurde versucht,eine Datei mit einem falschen格式zu laden。
翻译:
无法加载文件或程序集“XYZ”或其依赖项之一。试图加载格式不正确的程序
以AnyCPU独立方式启动ADB时得到的OleDb错误如下:
Der'Microsoft.Jet.OLEDB.4.0'- Provider ist nicht auf dem lokalen Computer registriert。
这是通常的无64位JET错误警告:
“Microsoft.Jet.OLEDB.4.0”提供程序未在本地计算机上注册。
现在,根据我的理解,通常如果主项目是AnyCPU并且子项目是特定的,我会得到构建错误,因为 它会尝试从AnyCPU访问x86,在这种情况下是x64。 但是在这里我尝试从x86访问x86但是不起作用,但是从x86访问AnyCpu(应该是x64)有效吗?
如有必要,我可以提供更多信息和所有配置文件等。
如果我写这个容易混淆,我很抱歉,但我对这个问题非常困惑。
答案 0 :(得分:1)
你应该avoid using the AnyCPU
设置。
但我猜你的解决方案配置不正确。
在Visual Studio 2010中,右键单击解决方案,然后单击“属性”(“Eigenschaften”)。选择“配置属性”(“Konfigurationseingenschaften”)并确保所有项目都将构建为x86
。
如果您计划提供64位版本的应用程序,我建议您创建不同的构建配置文件。您可以通过单击解决方案属性中的“Configuration Manager”来执行此操作。在“Active Platform Configuration”下,选择“< New ...>”,选择“x64”,从“x86”复制设置并启用“Create new project platforms”。然后浏览列表并确保所有项目在此配置中构建为x64。
答案 1 :(得分:0)
好的,我现在找到了。问题是错误消息并没有真正帮助。
在输出中挖掘显示特定表单上的resgen.exe存在问题 谷歌和VS命令行的更多挖掘表明,它试图得到错误的System.Forms.dll: http://connect.microsoft.com/VisualStudio/feedback/details/532584/error-when-compiling-resx-file-seems-related-to-beta2-bug-5252020并且意识到是的,我在该表单上使用了ImageList。