【问题标题】:Using DbLinq in IronPython在 IronPython 中使用 DbLinq
【发布时间】:2012-04-25 15:09:21
【问题描述】:

我正在尝试在 IronPython 应用程序中使用 dblinq,但在开始使用时遇到了一些问题。尝试导入 dblinq 类时,使用 clr.AddReference() 似乎看不到 dblinq。

我可以构建但不能访问库

import clr
clr.AddReference("DbLinq")
clr.AddReference("System.Data.Linq")
from System.Data.Linq import DataContext

exit = raw_input("press any key to quit")

1: 我的 dblinq 源位于名为 Resources 的子文件夹中

clr.AddReferenceToFileAndPath("Resources/DbLinq.dll") => 找不到文件

clr.AddReference("DbLinq") => 无法添加对 dblinq 的引用

clr.AddReferenceToFileAndPath("C:/Development/DBLinq2/Dblinq.dll" => 成功

但仍然无法使用使用from DbLinq import ...的类

解决方案

    import clr

   clr.AddReferenceToFileAndPath("%s\Resources\DbLinq.dll" %os.getcwd())
    clr.AddReference("DbLinq")
    from Npgsql import *
    from DbLinq import Data

【问题讨论】:

  • 也许您缺少其他一些依赖项。尝试在 DbLinq.dll 上运行 Dependency Walker (dependencywalker.com) 看看是否会产生一些有趣的东西...
  • 嗯,IESHIMS.dll 是您不必担心的依赖项之一...您是否在 Resources/DbLinq.dll(应该)或 C:\Development\DBLinq2...(该目录可能包含其他Resource 目录中需要的dll)
  • 两者都做了,Resources 包含 Development\Dblinq2 所做的所有文件
  • 所以您不能使用/导入库存 dblinq 类型或基于此的代码吗?您是否尝试将 dblinq 目录添加到路径中? import sys sys.path.append(r"C:\Temp\DbLinq-0.20.1")
  • 您将 dblinq.dll 本身附加到了路径中。您能否再次尝试指向包含 dblinq 附带的所有 dll 的文件夹?你还需要clr.AddReference("DbLinq")

标签: visual-studio-2010 linq ironpython dblinq


【解决方案1】:

对于像 DbLinq 这样带有依赖关系或拆分为多个 DLL/模块的库,您可以通过编程方式添加它们的位置,以允许运行时找到所有需要的文件。

import sys
sys.path.append(r"C:\Temp\DbLinq-0.20.1")

然后您可以像往常一样引用所有必需的程序集:

clr.AddReference("DbLinq")

如果有一个主程序集,您还可以使用 clr.AddReferenceToFileAndPath(带有绝对路径),它会将引用的程序集位置隐式添加到路径中。

clr.AddReference(r"C:\Temp\DbLinq-0.20.1\DbLinq.dll")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多