为什么x64控制台应用程序可以毫无例外地引用32位Oracle.DataAccess.dll

孙彦宏

这是一个用于更新Oracle数据库的控制台应用程序。它以32位引用Oracle.DataAccess.dll。这是有关数据库操作的核心代码。

            using (OracleConnection connection = new OracleConnection(DataSource))
            {
                using (OracleCommand cmd = new OracleCommand())
                {
                    try
                    {
                        cmd.CommandText = paraText;
                        cmd.CommandType = CommandType.Text;
                        cmd.Connection = connection;
                        cmd.Connection.Open();
                        cmd.ExecuteNonQuery();
                    }
                    catch (Exception ex)
                    {
                        FileLog.Error("UpdateActiveStatus", ex, LogType.Error);
                    }
                    finally
                    {
                        cmd.Connection.Close();
                        cmd.Connection.Dispose();
                    }
                }
            }

我将控制台应用程序平台目标设置为x64,而oracle dll为32位。但这有效!为什么?我认为x64应用程序无法引用x86 dll。

为了确保该应用程序在x64中运行,我转到任务管理器,发现控制台应用程序进程确实处于x64模式。

为什么?带有32位dll的x64控制台应用程序,没有任何错误的格式dll异常?

编辑:这是有关版本的更多信息。

这是设置控制台应用程序的方式。 在此处输入图片说明

这是它所指的oracle dll。 在此处输入图片说明

这是oracle dll版本检测。 在此处输入图片说明

编辑:我得到的结论是,它现在可以从GAC找出这个x64 dll。但是它如何知道应该使用哪个版本?我的本地计算机上安装了不同的oracle客户端。

测试帐号

对于强名称汇编,第一个搜索选择是GAC,然后是bin文件夹。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

.NET不使用AppDomain中加载的Oracle.DataAccess.dll

x-64计算机上的Oracle.DataAccess.Dll加载问题

在禁用IIS 7.5 32位的Windows Server 2008上实现Oracle.Web.dll,Oracle.DataAccess.dll 64位失败

与Oracle数据库的连接在Oracle.DataAccess.dll中给出了System.TypeInitializationException'?

如何使.Net Oracle.DataAccess.dll(ODP)像MS一样提供工作

卸载后,Oracle.DataAccess仍尝试访问oraops12.dll

'Oracle.DataAccess.Client.OracleException' 类型的异常发生在 Oracle.DataAccess.dll 中,但未在用户代码中处理

C# asp.NET 将查询的输出显示到屏幕。错误:Oracle.DataAccess.dll 中的“System.ArgumentException”

oracle空异常oracle dataaccess

Oracle DataAccess锁定代码停止

Oracle.DataAccess.Client依赖关系

在.NET中引用正确版本的Oracle.DataAccess

从控制台应用程序动态使用DLL

Oracle Managed DataAccess连接对象使连接保持打开状态

使用Oracle.DataAccess.Client(ODP.NET)替换TableAdapter

无法在Visual Studio 2013中选择Oracle.DataAccess

获取Oracle.DataAccess.Types.OracleClob而不是实际值

'Oracle.DataAccess.Client.OracleConnection' 抛出异常,WinForms Application

使用包含使用互斥量的静态变量的共享dll时,为什么控制台应用程序挂起?

从 Win32 控制台应用程序调用 dll [C]

控制台应用程序 DLL 和类库 DLL 之间的区别

在 IIS 64 位服务器上部署时出现“Oracle.DataAccess”缺失依赖错误

为什么我收到'Oracle.DataAccess.Client.OracleConnection错误的类型初始化器?

.Net Framework 4.7控制台应用程序引用.NET Core dll-输出目录中的意外文件

在 win32 控制台应用程序中使用 ntdll.dll 好不好?

是否可以将相同的DLL放入控制台应用程序和NuGet依赖项中?

为什么在编译.NET Core控制台应用程序时,我们同时出现dll和exe文件?

没有为Oracle.DataAccess.Client错误安装DDEX提供程序

无法加载文件或程序集“ Oracle.DataAccess”或其依赖项之一