我正在开发一个(免费的、开源的)实体框架工具,它基本上是一个 ADO.NET 提供程序,但它也使用了一些更高的抽象(例如 ObjectContext、EntityConnection)。我希望它支持几乎所有旧版本的 EF (EF4=<)。在 EF5 出现之前,这很容易,因为我已经能够通过仅针对 .NET40 来开发它。
EF5 使事情变得更加复杂,因为一些新功能需要 .NET45 框架。另一方面,EF5 也支持 .NET40。最重要的是,EF 现在是独立于 .NET 框架开发的。
目前,很明显,同时针对 .NET40 和 .NET45 是不可避免的。但是目前我不知道建立一个可以符合独立开发的EF的多目标环境的最佳方法是什么。我也没有找到任何关于这个问题的好文档。
我应该使用多个解决方案文件吗?多个项目文件?多种解决方案配置?以某种方式引用所有版本的EF?创建一个通用的构建脚本?如果是,如何?如何针对不同的配置运行我的单元测试?如何指示测试可以/应该在特定配置中失败?更改后的命名空间(例如 ObjectContext)呢?我应该使用#if 指令来解决这个冲突吗?如果新的 EF 版本需要实现会破坏与以前版本的兼容性的功能怎么办?在这一点上我真的很不确定。