【问题标题】:How can .NET app run with 32bit and 64bit Office?.NET 应用程序如何在 32 位和 64 位 Office 上运行?
【发布时间】:2013-01-19 12:44:28
【问题描述】:

我有一个 Windows 64 位系统和一个 C# 应用程序,它使用 OleDbConnection 通过 32 位版本的 AccessDatabaseEngine.exe 组件读取 Excel 数据,因为我安装了 Office 32 位(按照 MSFT 的建议)和 64 位版本的 AccessDatabaseEngine不适用于 32 位 Office。

为了让我的 C# 应用程序正常工作,我必须在项目构建设置中设置“首选 32 位”。这将设置编译器 /platform anycpu32bitpreferred 标志。在英特尔平台上没有“首选”。

所以一切运行良好。在我的机器上。不在我老板安装 64 位 Office 的 64 位机器上。

我找不到任何 app.config 选项来强制 64 位。有吗?在 .NET 加载序列中理论上是否可能存在一个?

MSFT 没有考虑到这一点。我应该能够以某种方式构建一个可以与 32 位和 64 位版本的 Office 一起使用的应用程序。我可以以某种方式使用 OleDbConnection 吗?

我知道 CorFlags.exe /32bitpref- 标志,但这需要维护两个版本的二进制文件。

有什么想法吗?修复? App.Config 选项?

【问题讨论】:

    标签: .net ms-office 32bit-64bit oledbconnection


    【解决方案1】:

    您可以使用 ODBC 而不是 AccessDatabaseEngine COM 对象与 Excel 对话。这将跳过 32/64 位问题。

    【讨论】:

    • 谢谢,但不想使用 ODBC。
    【解决方案2】:

    您需要下载the 64 bit version 的 ODBC 驱动程序(上面写着 access,但它也有 excel 驱动程序)。

    您可能会收到一条错误消息,提示您不能同时安装 32 位和 64 位,要解决此问题,您必须 use the /passive flag

    在运行 Office 2010 64 位的机器上安装 Microsoft ACE OLEDB Provider 32 位:

    • AccessDatabaseEngine.exe /passive

    在运行 Office 2010 32 位的机器上安装 Microsoft ACE OLEDB Provider 64 位:

    • AccessDatabaseEngine_X64.exe /passive

    【讨论】:

    • 在同一台机器上安装 32 位 64 位驱动程序的著名“/passive”技巧请参见此处:blog.codefluententities.com/2011/01/20/…
    • 哇哦!我希望一年前我知道如何使用 64 位办公室获得 32 位。谢谢,我已经用该网站的详细信息更新了我的答案。
    • 抱歉回复晚了,我没有收到任何通知。如果我添加 64 位驱动程序,它会与 32 位版本的 Office 通信吗?否则这无济于事。谢谢,戴夫
    • 我安装了带有 /passive 选项的 64 位软件包,这似乎让我的系统不再需要编译为 CPU ANY 的应用程序的“首选 32 位”选项来与之交谈32 位 Excel。等待我老板的反馈,如果好的,那么这就是答案。谢谢,戴夫
    • 好的,很好用,谢谢!为什么 MSFT 会在没有 /passive 的情况下从安装中发出可怕的警告???如果必须,他们应该只说安装另一个或使用 /passive !顺便说一句,如果没有/被动,这将无法工作,因为我需要一个 64 位 (ANY) 应用程序来连接一台机器与 32 位 Office 和另一台机器上的 64 位,其中两台机器都是 64 位。
    猜你喜欢
    • 2012-07-04
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 2020-01-07
    • 2011-11-02
    相关资源
    最近更新 更多