Добавление ссылки System.Data.SQLite в IronPython - PullRequest
1 голос
/ 13 января 2011

Я пытаюсь использовать clr.AddReference для добавления функциональности sqlite3 в простую программу IronPython, которую я пишу; но каждый раз, когда я пытаюсь сослаться на System.Data.SQLite, я получаю эту ошибку:

Traceback (последний вызов был последним): Файл "", строка 1, в IOError: System.IO.IOException: не удалось добавить ссылку на сборку System.Data.SQLite
в 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)<br> at System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2)<br> at CallSite.Target(Closure , CallSite , CodeContext , Object , Object )<br> at IronPython.Compiler.Ast.CallExpression.Invoke1Instruction.Run(InterpretedFrame frame)<br> at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)<br> at Microsoft.Scripting.Interpreter.LightLambda.Run2[T0,T1,TRet](T0 arg0, T1 arg1)<br> at IronPython.Runtime.FunctionCode.Call(CodeContext context)<br> at IronPython.Runtime.Operations.PythonOps.QualifiedExec(CodeContext context, Object code, PythonDictionary globals, Object locals)<br> at Microsoft.Scripting.Interpreter.ActionCallInstruction 4.Run (кадр InterpretedFrame)
в Microsoft.Scripting.Interpreter.Interpreter.Run (кадр InterpretedFrame)

Я тестировал импорт и ссылки в основном в интерпретаторе, и это строки, которые я тестирую:

import sys
импорт clr
sys.path.append ("C: / Program Files (x86) /SQLite.NET/bin")
clr.AddReference ("System.Data.SQLite")

Ошибка возникает после ввода строки clr.AddReference. Как правильно добавить System.Data.SQLite?

1 Ответ

1 голос
/ 15 января 2011

Мое первое предположение заключается в том, что вы пытаетесь загрузить x86 (32-разрядный) файл System.Data.SQLite.dll в процесс x64 (64-разрядный) или наоборот. System.Data.SQLite.dll содержит собственную библиотеку sqlite3, которую необходимо скомпилировать для x86 или x64, поэтому для каждого ЦП существует версия System.Data.SQLite.dll.

Если вы используете консоль, ipy.exe всегда 32-битный (даже на 64-битных платформах), а ipy64.exe - AnyCPU, поэтому он соответствует текущей платформе. Если вы используете IronPython, а хост-приложение - AnyCPU, вам нужно загрузить правильную копию System.Data.SQLite.dll для машины, на которой вы работаете (или просто принудительно установить хост-приложение x86).

...