2011-01-13 43 views
1

Ich versuche clr.AddReference zu verwenden sqlite3 Funktionalität zu einem einfachen Ironpython Programm hinzufügen Ich schreibe; aber jedes Mal wenn ich versuche System.Data.SQLite zu referenzieren bekomme ich diesen Fehler:Hinzufügen System.Data.SQLite Referenz in Ironpython

Traceback (most recent call last): File "", line 1, in IOError: System.IO.IOException: Could not add reference to assembly System.Data.SQLite
at Microsoft.Scripting.Actions.Calls.MethodCandidate.Caller.Call(Object[] args, Boolean&shouldOptimize)
at IronPython.Runtime.Types.BuiltinFunction.BuiltinFunctionCaller 2.Call1(CallSite site, CodeContext context, TFuncType func, T0 arg0)
at System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2)
at CallSite.Target(Closure , CallSite , CodeContext , Object , Object)
at IronPython.Compiler.Ast.CallExpression.Invoke1Instruction.Run(InterpretedFrame frame)
at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
at Microsoft.Scripting.Interpreter.LightLambda.Run2[T0,T1,TRet](T0 arg0, T1 arg1)
at IronPython.Runtime.FunctionCode.Call(CodeContext context)
at IronPython.Runtime.Operations.PythonOps.QualifiedExec(CodeContext context, Object code, PythonDictionary globals, Object locals)
at Microsoft.Scripting.Interpreter.ActionCallInstruction
4.Run(InterpretedFrame frame)
at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)

Ich habe vor allem die Importe und Referenzen im Interpreter erproben, und dies sind die Linien I-Test:

import sys
import clr
sys.path.append("C:/Program Files (x86)/SQLite.NET/bin")
clr.AddReference("System.Data.SQLite")

Der Fehler tritt auf, nachdem die Zeile clr.AddReference eingegeben wurde. Wie würde ich System.Data.SQLite richtig hinzufügen?

+0

Ich habe SQLite.NET heruntergeladen, und Ihr Beispielcode funktioniert perfekt für mich. Überprüfen Sie den Pfad zu SQLite korrekt? – Cameron

Antwort

1

Meine erste Schätzung ist, dass Sie versuchen, die x86 (32-Bit) System.Data.SQLite.dll in einem x64 (64-Bit) -Prozess oder umgekehrt zu laden. System.Data.SQLite.dll enthält die native sqlite3-Bibliothek, die für x86 oder x64 kompiliert werden muss, daher gibt es für jede CPU eine Version von System.Data.SQLite.dll.

Wenn Sie die Konsole verwenden, ipy.exe ist immer 32-Bit (auch auf 64-Bit-Plattformen), während ipy64.exe AnyCPU ist, so dass es die aktuelle Plattform übereinstimmt. Wenn Sie IronPython hosten und die Host-App AnyCPU ist, müssen Sie die richtige Kopie von System.Data.SQLite.dll für den Computer laden, auf dem Sie ausgeführt werden (oder erzwingen Sie einfach die Host-App x86).