2011-03-10 63 views
1

使用3.0编译器构建但针对2.0框架的DLL肯定会在只有2.0运行时的机器上运行?关于使用.NET 3.0语法和编译2.0的建议请

详情: 迄今为止,我们一直在使用.NET 2.0编译器进行构建,以确保与2.0运行时的兼容性。现在我们想要包含一些包含3.0语法的第三方源代码,但我们仍然需要与2.0运行时兼容。因此,我们正在考虑更改为用于生产版本的3.0编译器,但针对2.0框架。

虽然它看起来应该有效,但它有点吓人,所以我们真的很想听到试过这个的人。

回答

3

您可以使用下面的C#3的功能,同时还针对2.0运行时:

  • 自动实现的属性
  • 对象/集合初始化
  • 隐式类型的局部变量/数组
  • 匿名类型
  • Lambda表达式

您可以使用下面的C#3的功能与2.0运行时有hack

  • 扩展方法

您不得使用下列内容:

  • LINQ扩展
  • 查询语法
+0

+1 for黑客攻击。 – Mehrdad 2011-03-10 05:10:35

+0

感谢您提供非常详细的答案。 – HansA 2011-03-11 04:23:19

0

是的,它会工作,因为编译器扩展只是语法糖。只要确保它使用正确的服务包。

0

只要第三方库不参考不在目标运行库中的库,就没问题。 C#3.0像C#2.0一样编译为IL代码,所有语法添加仅限于C#语言。

0

这很好。 .NET 3.5和C#3.0编译器的输出与.NET 2.0编译器是二进制兼容的。

相关问题