Sam*_*rum 16 odp.net oracleclient
我开发了一个使用Oracle Data Provider for .NET的应用程序.我将应用程序文件(.exe)和ODP库(Oracle.DataAccess.dll)复制到未安装Oracle客户端和ODP.NET的另一台计算机上.当我运行应用程序时,我收到错误消息:"Oracle.DataAccess.Client.OracleConnection"的类型初始化程序引发了异常.
*****************Exception Text***************
System.TypeInitializationException: The type initlializer for 'Oracle.DataAccess.Client.OracleConnection at Oracle.DataAccess.Client.OracleConnection..cctor()
--- End of inner exception stack trace ---
at Oracle.DataAccess.Client.OracleConnection..ctor(String connectionString)
...
Run Code Online (Sandbox Code Playgroud)
我是否必须在要运行应用程序的计算机上安装ODP.NET和Oracle客户端?如果是的话,还有其他方法我不必安装它们但仍然可以运行我的应用程序吗?
谢谢
两种选择:
在要运行程序的 PC 上安装 Oracle 客户端
使用Oracle.ManagedDataAccess.dll
您可以在 NuGet 上获取它(搜索“oracle managed”)或下载ODP.NET_Managed.zip (链接到测试版,但指向正确的方向)
我使用它是为了让我部署到的计算机不需要安装 Oracle 客户端。
NB 在我看来这对控制台应用程序有好处,但如果你打算安装你的应用程序很烦人,所以我在这种情况下安装客户端。
最简单的方法!
如果您使用的是Entity Framework,并且您的Visual Studio版本是2012或更高版本,那么
它完成了.现在重新启动Visual Studio并构建代码.
这些套餐有什么作用?
安装这些软件包后,无需安装其他Oracle客户端软件即可连接到数据库.
好的,当您确定其他使用相同过程的应用程序有效时; 在您的新应用程序上确保您有数据访问参考和三个DLL文件...
我从Oracle站点下载了ODAC1120320Xcopy_32bit:
http://www.oracle.com/technetwork/database/windows/downloads/utilsoft-087491.html
参考:Oracle.DataAccess.dll(ODAC1120320Xcopy_32bit\odp.net4\odp.net\bin\4\Oracle.DataAccess.dll)
在项目中包含这3个文件:
当我尝试使用正确的引用和文件创建另一个应用程序时,我会收到该错误消息.
修复:突出显示所有三个文件并选择"复制到输出"=如果更新则复制.我确实复制了更新,因为其中一个dll超过100MB并且我做的任何更新都不会再次复制这些文件.
我也遇到了一个注册表错误,这个修复了它.
public void updateRegistryForOracleNLS()
{
RegistryKey oracle = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\ORACLE");
oracle.SetValue("NLS_LANG", "AMERICAN_AMERICA.WE8MSWIN1252");
}
Run Code Online (Sandbox Code Playgroud)
对于Oracle nls_lang列表,请访问此站点:https://docs.oracle.com/html/B13804_02/gblsupp.htm
在那之后,一切顺利.
我希望它有所帮助.
您需要安装 Oracle 客户端驱动程序才能使这些类正常工作。
可能有可以处理 Oracle 的第 3 方连接框架,也许其他人可能知道一些特定的框架。
| 归档时间: |
|
| 查看次数: |
118323 次 |
| 最近记录: |