我可以在针对.Net 3.5的项目中使用所有C#4.0功能吗?

时间:2010-08-18 22:15:07

标签: c# visual-studio visual-studio-2010 c#-4.0

开发环境: - VS2010 - .Net Framework 4.0,3.5,2.0

分期和制作环境: - .Net Framework 3.5,2.0

我正在研究的项目是针对.Net Framework 3.5。今天我在这个项目中使用了可选参数功能,这是C#4的新功能,它工作正常。我认为VS2010正在使用C#4编译器,并且正在使用可选参数将该方法编译为IL中相应的重载方法。

我想知道我是否也可以使用所有新的C#4功能。

2 个答案:

答案 0 :(得分:7)

您无法使用dynamic功能。这依赖于C#运行时和DLR DLL,它们仅在4.0版本的.Net框架上可用。 DLR的版本可用于3.5,但我不认为它们与C#编译器所需的版本兼容。

此外,您无法在向下目标场景中使用NoPIA /嵌入式互操作类型。此功能需要4.0中添加的CLR支持。

在Visual Studio 2010中进行向下定位有什么好处,但您不必了解每个限制。如果您的项目设置为目标3.5,并且您使用不兼容的功能,Visual Studio将产生错误。

答案 1 :(得分:1)

实际上,几周前我碰到了这个问题。我使用了可选参数,即使该项目的目标是.net 3.5。您需要非常小心,因为如果您在仅安装了.net 3.5运行时的计算机上安装该应用程序,那么您的程序可能无法运行。就我而言,我使用了可选的params,而夜间构建服务器只安装了3.5,因此构建失败。