【问题标题】:Publish fails when Solution Builds - Oracle.DataAccess.dll 64bit解决方案构建时发布失败 - Oracle.DataAccess.dll 64bit
【发布时间】:2015-07-27 16:53:51
【问题描述】:

所以我在发布我的 WebApp 时遇到了问题。我已在 Configuration Manager 中将所有项目设置为 AnyCPU。我在 DAL 中使用了 32 位版本的 Oracle.DataAccess.dll,但我需要为服务器使用 64 位版本。服务器正在运行 64 位版本的 Oracle。

不幸的是,当我将 64 位版本的 dll 放入我的项目并重新构建时,它会引发错误。

Could not load file or assembly 'Oracle.DataAccess' or one of its dependencies. An attempt was made to load a program with an incorrect format.

任何想法将不胜感激。几天来我一直在解决这个问题,但一直未能找到帮助。

哦,还有!实际上,我之前可以发布它并推送 32 位版本的 Oracle dll,即使我的 DAL 中有 64 位版本。我最终从我的计算机上删除了 32 位版本的 Oracle,这样就不会发生这种情况。但是有什么想法为什么会这样做?

【问题讨论】:

    标签: c# asp.net oracle dll visual-studio-2013


    【解决方案1】:

    brandonbanks 的修复一直有效,直到安装 oracle 客户端 12c r2(64 位)。安装 Visual Studio 后不会加载 oracle 数据访问 dll(与所列错误相同)。

    以前的 oracle 客户端是 12c r1(64 位),但我需要 oracle 客户端 r2。新的 r2 oracle 客户端打破了在 Visual Studio 中构建 asp.net 项目的能力。

    修复是卸载所有 oracle,然后完全清理(从注册表中删除 oracle 以及遗留的 oracle 文件)。然后编译工作正常。不需要更改任何 Visual Studio 方面的内容。也不需要重新安装oracle客户端进行编译和发布重新开始工作(只需要12c r2 oracle 64位数据访问dll)。

    然后可以重新安装其他oracle客户端,但如果还安装32位客户端建议最后做64位客户端。

    【讨论】:

      【解决方案2】:

      发现是Visual Studio的编译过程有问题。

      我将此行添加到 App_Data 文件夹中的发布配置文件中。

      <AspnetCompilerPath>C:\Windows\Microsoft.NET\Framework64\v4.0.30319</AspnetCompilerPath>
      

      还必须将我的 IIS 更改为 64 位。我使用了这个 cmd 脚本。

      reg add HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0\WebProjects /v Use64BitIISExpress /t REG_DWORD /d 1
      

      希望这可以帮助遇到类似问题的任何人。

      【讨论】:

        猜你喜欢
        • 2019-01-02
        • 2018-04-28
        • 2016-03-02
        • 2021-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多