Mono中的System.Data是否已扩展为包含额外功能?我正在尝试使用为Mono.Data.SqlExpressions中的Mono编写的SQL Parser,但是当SqlExpressions名称空间中的所有类都包含在内时,项目仍然无法编译,因为System.Data中的类不匹配。
例如,System.Data.DataColumn没有定义PropertyChanged事件。我需要使用Mono System.Data库吗?当Mono DataColumn类包含在项目中时,这种编译错误不会发生(它引用了.Net框架中找不到的DataCategory等类)。
或者,任何关于如何将Mono中的Sql Parser移植到微软的.Net框架的帮助都将不胜感激。我试图下载源代码并将缺少的库添加到项目中,但这种方法似乎有缺陷。缺少依赖项的数量似乎增加了,而不是解决了问题。
发布于 2009-11-12 09:42:26
Mono试图与MS的实现保持二进制和API兼容。这意味着除了一些内部支持的方法和类之外,Mono公开的所有API都应该与MS.Net的101匹配。这是为了避免人们假设一个方法存在的复杂性,因为它在Mono中编译,然后在MS.Net上根本不起作用。
当Mono贡献者实现新的代码和功能时,通常会将其合并到单独的程序集和项目中。顾名思义,Mono.Data就是这样一个“扩展”,因此您需要包含所有依赖程序集才能构建它。如果Mono.Data.dll和它的dep可以在MS.Net上运行,这是一个问题,或者是检查文档并对其进行测试。
至于你的第二个问题,我不能告诉你细节,但除非代码有特定的说明才能在Windows上运行,否则很可能需要做大量的工作才能移植。与任何API一样,许多代码不会公开给公共接口,并且在移植代码时需要解决实现的内部特性。我建议你花点时间分析代码是如何工作的,然后试着让它在MS.Net上运行,尽可能多地删除Mono代码上的细节。最后,如果代码足够兼容,你应该考虑用编译指令和#if !MONO杂注来修补MONO的源代码,以避免给未来的用户带来麻烦。
https://stackoverflow.com/questions/1707092
复制相似问题