0

我对 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 上开始的。

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

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

项目 S:C# DLL,不需要 OleDB。编译为 x86 并包含在 E 的参考资料中,这是可行的。是从网上下载的,在32位机器上添加到VS 2008中。

构建错误如下:
Die Datei oder Assembly "file:///X:/Entw/E/VB.net/ADB/bin/Debug/ADB.exe" oder eine Abhängigkeit davon wurde nicht gefunden。Es wurde versucht, eine Datei mit einem falschen Format zu laden。
已翻译:
无法加载文件或程序集“XYZ”或其依赖项之一。试图加载格式不正确的程序。

我在将 ADB 作为 AnyCPU 独立启动时遇到的 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)有效吗?

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

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

4

2 回答 2

1

您应该避免使用该AnyCPU设置。

但我猜您的解决方案配置不正确。在 Visual Studio 2010 中,右键单击解决方案,然后单击“属性”(“Eigenschaften”)。选择“配置属性”(“Konfigurationseingenschaften”)并确保所有项目都将构建为x86.

如果您计划提供 64 位版本的应用程序,我建议创建不同的构建配置文件。您可以通过单击解决方案属性中的“配置管理器”来执行此操作。在“Active Platform Configuration”下选择“<New...>”,选择“x64”,从“x86”复制设置并启用“Create new project platforms”。然后浏览列表并确保所有项目都在此配置中构建为 x64。

于 2013-01-11T12:58:37.900 回答
0

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

挖掘输出发现这是特定表单上的 resgen.exe 的问题。
更多在 Google 和 VS 命令行中的挖掘显示它以某种方式试图获取错误的 System.Forms.dll: http ://connect.microsoft.com/VisualStudio/feedback/details/532584/error-when-compiling-resx-file -seems-related-to-beta2-bug-5252020并意识到是的,我在该表单上使用了 ImageList。

于 2013-01-23T15:16:57.577 回答