首页 > 解决方案 > .NET 应用程序转换为 64 位:ODBC 问题

问题描述

我目前正在研究一家公司提供的更大的 .NET 应用程序。当处理大量数据时,系统会出现内存不足的问题。经过一番研究,我决定采取措施将应用程序的目标平台更改为 64 位。在 Visual Studio 2017 中,可以更改项目的平台...... 开始构建应用程序时,我在输出控制台中收到了几次警告 CNDL1138,但无论如何构建都是成功的。启动应用程序时,我收到不同的错误/异常消息:

于是我开始一步步解决问题。我试图解决的第一件事是 ODCB 问题。启动问题时,会弹出一个窗口,提示驱动程序和应用程序不匹配。但是我检查了安装的驱动程序,它们是 64 位的,就像应用程序一样。我不知道驱动程序可能存在什么问题。

那么这里有人有同样的问题并且可以解决吗?

(补充信息:我正在使用 Visual Studio 2017、.NET Framework 4.6.1 和 C# 编程)

标签: c#.netdllodbctarget-platform

解决方案


您可能知道 Odbc 是一个标准化的数据库接口。为了让它工作,它需要一个特定于实际数据库引擎的驱动程序。

我知道的一个具体问题是访问 odbc 引擎。JET驱动程序曾经很常见,但它只是 32 位的。替代品是ACE 驱动程序,它存在于 x64 和 x86 变体中。这需要使用可再发行组件安装在系统上,据我所知,没有合法的方法可以在应用程序中包含 dll 文件。它也包含在 office 安装中(至少是我当时使用的变体),但 office 默认使用所有组件的 x86 变体,您需要在安装过程中明确选择 x64。

我认为您可以在办公室 x86 安装的同时安装 x64 可再发行 ace 驱动程序,但我的记忆可能有问题。

我不知道 oracle 驱动程序是否存在类似问题。我怀疑 MSSQL 驱动程序的问题更简单,因为 64 位操作已成为标准的时间更长。

.Net 将按需解决大多数依赖项,通常这将在编译使用依赖项的第一段代码时完成,即在第一次运行之前完成。检查是什么驱动程序导致您出现问题的一种方法是检查异常发生的位置,即它尝试使用哪种数据库。


推荐阅读