Ado.net 在IronPython中添加System.Data.SQLite引用

Ado.net 在IronPython中添加System.Data.SQLite引用,ado.net,ironpython,system.data.sqlite,Ado.net,Ironpython,System.data.sqlite,我试图使用clr.AddReference将sqlite3功能添加到我正在编写的简单IronPython程序中;但每次我尝试引用System.Data.SQLite时,都会出现以下错误: 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 IOError:System.IO.IOException:无法添加对程序集System.Data.SQLite的引用 在Microsoft.Scripting.Actions.Calls.MethodCandidate.Caller.Call(对象[]ar

我试图使用clr.AddReference将sqlite3功能添加到我正在编写的简单IronPython程序中;但每次我尝试引用System.Data.SQLite时,都会出现以下错误:

回溯(最近一次呼叫最后一次): 文件“”,第1行,在 IOError:System.IO.IOException:无法添加对程序集System.Data.SQLite的引用
在Microsoft.Scripting.Actions.Calls.MethodCandidate.Caller.Call(对象[]args,布尔值&shouldOptimize)
在IronPython.Runtime.Types.BuiltinFunction.BuiltinFunctionCaller
2.Call1(调用站点、CodeContext上下文、TFuncType func、T0 arg0)
在System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](调用站点,T0 arg0,T1 arg1,T2 arg2)
在CallSite.Target(闭包、CallSite、CodeContext、对象、对象)
在IronPython.Compiler.Ast.CallExpression.Invoke1Instruction.Run(解释器框架)
在Microsoft.Scripting.Transparer.Transparer.Run(解释器框架)上运行
在Microsoft.Scripting.explorer.LightLambda.Run2[T0,T1,TRet](T0 arg0,T1 arg1)
在IronPython.Runtime.FunctionCode.Call(CodeContext上下文)
在IronPython.Runtime.Operations.PythonOps.QualifiedExec(CodeContext上下文、对象代码、PythonDictionary全局变量、对象局部变量)
在Microsoft.Scripting.解释器.ActionCallInstruction中运行(解释器框架)
在Microsoft.Scripting.解释器.解释器.Run(解释器框架)

我主要在解释器中测试了导入和引用,下面是我测试的行:

导入系统
导入clr
sys.path.append(“C:/ProgramFiles(x86)/SQLite.NET/bin”)
clr.AddReference(“System.Data.SQLite”)


该错误发生在输入clr.AddReference行之后。如何正确添加System.Data.SQLite?

我的第一个猜测是,您试图在x64(64位)进程中加载x86(32位)System.Data.SQLite.dll,反之亦然。System.Data.SQLite.dll包含本机sqlite3库,必须为x86或x64编译该库,因此每个CPU都有一个System.Data.SQLite.dll版本


如果使用控制台,ipy.exe始终是32位的(即使在64位平台上),而ipy64.exe是AnyCPU,因此它与当前平台匹配。如果您托管的是IronPython,且主机应用程序是AnyCPU,则需要为正在运行的计算机加载System.Data.SQLite.dll的正确副本(或仅强制主机应用程序x86)。

我的第一个猜测是,您试图在x64(64位)进程中加载x86(32位)System.Data.SQLite.dll,反之亦然。System.Data.SQLite.dll包含本机sqlite3库,必须为x86或x64编译该库,因此每个CPU都有一个System.Data.SQLite.dll版本


如果使用控制台,ipy.exe始终是32位的(即使在64位平台上),而ipy64.exe是AnyCPU,因此它与当前平台匹配。如果您正在托管IronPython,并且主机应用程序是AnyCPU,则需要为正在运行的计算机加载System.Data.SQLite.dll的正确副本(或者强制主机应用程序x86)。

我下载了SQLite.NET,您的示例代码对我来说非常适合。仔细检查SQLite的路径是否正确?我下载了SQLite.NET,您的示例代码对我来说非常适合。仔细检查SQLite的路径是否正确?