我之前听说过 .Net 3.5 编译的IL没有任何变化。在仔细考虑了我所知道的所有编译器功能后,事实上似乎它们都可以使用旧的IL实现,但我找不到官方来源来证实这个说法。这是真的吗?
我认为在IL方面并没有什么变化,但CLR实现内部发生了显著变化,以使动态方法更加高效,允许表达式树编译等。我记得在构建动态方法的安全性方面也发生了变化,使得即使在相对低信任环境中生成表达式树的lambda表达式也能调用私有方法。编译器知道调用私有方法是有效的,因为源代码编译时可以访问它。然而,证明这一点是棘手的 :) 请参见Eric Lippert的这篇笔记。
自从.NET 2.0以来,运送的CLR(版本2.0.50727)没有发生变化,因此您的IL代码是相同的。(另请参阅this SO QA)
因此,如果您愿意,您可以在.NET 2.0项目中使用许多.NET 3.5功能,只要您使用最新的编译器: