设计构建系统/项目结构的常见做法是什么,它允许针对具有不同功能集的多个.NET版本进行定位?
具体做法是:
答案 0 :(得分:6)
我尝试了几种不同的方法。
我排除了分支,因为使用SVN / TFS保持所有分支同步有点困难。分布式SCC确实对分支/合并有更高级的支持,所以如果我转换,我打算重新考虑这种方法。
我使用条件编译以及使用链接源文件的特定于版本的项目。我在这些方面做过的最具侵略性的库是Nito.Linq,尚未发布。但是,您可以查看源代码,了解我如何设置项目。它currently targets 3.5,4.0,SL3和SL4,并且每个都具有“with Rx”和“without Rx”变体。我也使用CF 3.5,但VS2010不支持它。
这种方法有一些缺点:
我确实问Rx team他们如何处理这种情况(他们支持3.5,4.0,SL3和SL4使用相同的代码库)。显然,他们使用自定义内部工具来创建运行时程序集的仅元数据版本,然后将它们组合到包含合并的仅元数据程序集的超集配置文件中。该项目是根据这个超集配置文件构建的,并且进行了后期编译“重定向”以将项目的配置文件更改为其中一个正常配置文件。
我简要地played around建立了一个开放源代码的Rx团队的工具,但遇到了太多“未被记录的”障碍。理论上它应该是可能的,但我认为对于没有Microsoft内部正确联系人的人来说,这将花费太多时间。