【问题标题】:Could not load file or assembly 'Oracle.DataAccess' - Markup View无法加载文件或程序集“Oracle.DataAccess” - 标记视图
【发布时间】:2011-09-19 14:15:02
【问题描述】:

安装最新版本的 ODAC 11.2.0.2.1 后,我遇到了一个奇怪的问题。我安装了 32 位和 64 位版本,因为我为这两种架构开发应用程序。我的电脑是 Win 7 64 位。

自从安装 ODAC 并引用了新的 64 位版本的 ODP.NET,当我在标记视图中查看所有 aspx 页面和母版页时,我在 Visual Studio 2010 中的一个 Web 应用程序项目对它们发出以下警告。

ASP.NET runtime error: 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.

警告仅限于标记视图。 Web 应用程序构建并运行良好。我尝试清理 VS 临时 ASP.NET 文件,但这并没有解决问题。我在整个应用程序中删除了对 Oracle.DataAccess 的所有引用,然后阅读它们以确保所有引用都是正确的。 Web 应用程序编译为“任何 CPU”,但它使用 64 位 Oracle.DataAccess。我创建了一个新项目,并引用了相同的项目和 dll,但我没有收到警告,因此它似乎特定于该项目文件。

任何想法为什么我会在标记视图中收到警告?

【问题讨论】:

    标签: vb.net visual-studio visual-studio-2010 odp.net


    【解决方案1】:

    在项目属性 --> 构建选项卡中明确将“平台目标”设置为“x86”或“x64”。

    请勿将其设置为“任何 CPU”。这是导致典型 Oracle 软件质量驱动程序精神崩溃的许多常见情况之一。

    【讨论】:

    • 这是另一种解决方案。毕竟,不要在生产服务器中安装 32 位库。听起来很蹩脚,现在一切都应该是 64 位的。如果可以的话 +10!
    【解决方案2】:

    原来 ODAC 11.2.0.2 xcopy 安装程序没有正确注册所有 dll (See bottom answer)。结果,Oracle.DataAccess.dll(64 位)被复制到 BIN 目录中,并且 VS 在标记视图中尝试加载它导致警告。手动注册丢失的 DLL 并重新启动后,我不再遇到问题。

    【讨论】:

      【解决方案3】:

      您可以检查的想法:

      • 检查 Visual Studio 项目中的 Oracle.DataAccess 引用是否将“特定版本”属性设置为“假”(这不是默认值)。
      • 使用 Fuslogvw.exe 确定 .NET Framework 尝试的位置是什么

      【讨论】:

        猜你喜欢
        • 2011-03-13
        • 2012-01-29
        • 2014-03-12
        • 2013-02-23
        • 1970-01-01
        • 2014-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多