【问题标题】:System.Data in MonoMono 中的 System.Data
【发布时间】:2009-11-10 10:52:03
【问题描述】:

Mono 中的 System.Data 是否已扩展为包含额外功能? 我正在尝试使用为 Mono.Data.SqlExpressions 中的 Mono 编写的 SQL 解析器,但是当 SqlExpressions 命名空间中的所有类都包含在内时,项目仍然无法编译,因为 System.Data 中的类不匹配。 例如,System.Data.DataColumn 没有定义 PropertyChanged 事件。 我需要改用 Mono System.Data 库吗? 当 Mono DataColumn 类包含在项目中时,不会发生此编译错误(它引用了 DataCategory 等类,而这些类在 .Net 框架中是找不到的)。

另外,任何有关如何将 Mono 中的 Sql Parser 移植到 Microsoft 的 .Net 框架的帮助将不胜感激。我试图下载源代码并将缺少的库添加到项目中,但这种方法似乎存在缺陷。缺少的依赖项的数量似乎在增加,而不是解决问题。

【问题讨论】:

    标签: mono system.data


    【解决方案1】:

    Mono 试图与 MS 的实现实现二进制和 API 兼容。这意味着除了一些内部支持方法和类之外,Mono 公开的所有 API 都应该与 MS .Net 匹配 101。这是为了避免像人们假设一个方法存在那样的复杂性,因为它在 Mono 中编译,然后它在 MS.Net 上根本不起作用。

    当 Mono 贡献者实现新代码和功能时,通常会将其合并到单独的程序集和项目中。顾名思义,Mono.Data 就是这样一个“扩展”,因此您需要包含所有依赖程序集才能构建它。如果 Mono.Data.dll 及其依赖项将在 MS.Net 上运行,则不管是不是问题或检查文档并对其进行测试。

    至于您的第二个问题,我无法告诉您具体情况,但除非代码具有要在 Windows 上运行的特定指令,否则很可能需要大量工作才能移植。与任何 API 一样,很多代码不会暴露给公共接口,并且在移植代码时需要解决实现的内部功能。我建议您花一些时间分析代码的工作原理,然后尝试通过尽可能多地删除 Mono 代码上的依赖项来使其在 MS.Net 上运行。最后,如果代码足够兼容,您应该考虑使用编译指令和 #if !MONO pragma 修补 Mono 的源代码,以便为将来的用户省去麻烦。

    【讨论】:

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