我对 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)有效吗?
如有必要,我可以提供更多信息和所有配置文件等。
如果我写得混乱,我很抱歉,但我对这个问题非常困惑。