我正在跑步:
我想编写一个简单的C#应用程序来从Oracle数据库中读取数据,并希望使用ODP.NET。但是,在运行程序时,我立即遇到运行时错误。
我启动了一个新的Windows窗体项目。
我在目录c:\ app \ Dave \ product \ 11.2.0 \ dbhome_1 \ ODP.NET \ bin \ 2.x \
我的代码是:
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace testapp_2
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
代码:
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
namespace testapp_2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
OracleConnection conn = new OracleConnection();
}
}
}
错误是:
无法加载文件或程序集'Oracle.DataAccess,Version = 2.112.1.0, Culture = neutral,PublicKeyToken = 89b483f429c47342'或其中一个 依赖。尝试加载程序不正确 格式。
在调试模式下运行时,程序将停止在行:
Application.Run(new Form1());
我过去曾在Windows XP下成功使用过Visual Stdio Express 2008和Oracle 10g,并认为这与以前一样非常简单,但显然不是。
有没有其他人遇到此错误,希望找到解决方法?我非常感谢任何帮助或信息。
非常感谢!
-Dave。
答案 0 :(得分:0)
在某些情况下,.net DLL不会在64位系统下同时针对x86和x64平台(如Microsoft Expression Encoder)。启动调试时可能会发生此错误(不确定它与ODP.NET的情况相同)。解决方案是将项目中的构建设置更改为目标x86而不是任何CPU。
答案 1 :(得分:0)
感谢大家发布了这么多有用的评论。
我尝试按照建议将目标CPU更改为x86而不是任何CPU(我也试过x64),但它没有任何区别。
但是考虑到这个话题让我觉得这可能是一个旧的ODP.NET dll,并且与当前/最新版本的.NET不兼容。
所以(在“属性”和“应用程序”选项卡中,我将目标.NET框架更改为.NET 3.5并且确实足以解决我的问题!
我现在能够从C#读取和写入数据库中的数据!我很高兴并且感到宽慰,现在它正在发挥作用。
再次感谢大家帮助我解决这个问题! : - )
-D。