我添加了Oracle.DataAccess作为asp.net核心项目的参考。 我在安装ODAC时只为.Net安装了Oracle Data Provider。 我想在项目中用Dapper做一个简单的例子。
public class Program
{
const string connectionString = "xxxxx";
public static void Main(string[] args)
{
IDbConnection connection = new OracleConnection(connectionString);
string sql = "SELECT * FROM People WHERE Name='JOHN'";
var r = connection.Query<People>(sql);
}
}
应用程序未运行。当我在项目文件夹上尝试“dnx run”时,我收到了以下错误。
System.BadImageFormatException:无法加载文件或程序集 'Oracle.DataAccess,Version = 4.121.2.0,Culture = neutral, PublicKeyToken = 89b483f429c47342'或其依赖项之一。一个 尝试加载格式不正确的程序。
如果收到此消息,可能意味着GAC中不存在Oracle.DataAccess dll。
打开命令行并转到odp.net下的bin文件夹,例如
cd C:\oracle\product\12.1.0\client_x86\odp.net\bin\4
在下面运行此命令
OraProvCfg.exe /action:gac /providerpath:C:\oracle\product\12.1.0\client_x86\odp.net\bin\4\Oracle.DataAccess.dll
完成这些步骤后,我能够成功运行项目。
答案 0 :(得分:1)
BadImageFormat表示dll与运行时不兼容。
问题是Oracle尚未发布与.NET Core兼容的驱动程序。
您仍然可以使用ASP.NET Core中当前可用的驱动程序,但仅限在完整的桌面.NET框架上运行,而不是在.NET Core Framework上运行。
您应该能够解决此问题的方法是从project.json文件中删除dnxcore50目标,以便仅定位桌面框架。
这样做意味着您现在只能在Windows上运行,但稍后当Oracle发布兼容驱动程序时,您可以选择以.NET Core框架为目标。