Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在针对.NET3.5的项目中使用所有C#4.0功能吗?_C#_Visual Studio_Visual Studio 2010_C# 4.0 - Fatal编程技术网

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

我可以在针对.NET3.5的项目中使用所有C#4.0功能吗?,c#,visual-studio,visual-studio-2010,c#-4.0,C#,Visual Studio,Visual Studio 2010,C# 4.0,发展环境: -VS2010 -.Net Framework 4.0、3.5、2.0 暂存和生产环境: -.Net Framework 3.5、2.0 我正在从事的项目的目标是.NETFramework 3.5。今天,我在这个项目中使用了C#4新的可选参数特性,效果很好。我认为VS2010正在使用C#4编译器,并且正在将带有可选参数的方法编译为IL中相应的重载方法 我想知道我是否也能使用所有新的C#4功能。您不能使用的是动态功能。这依赖于C#运行时和DLR DLL,它们仅在.Net framewo

发展环境: -VS2010 -.Net Framework 4.0、3.5、2.0

暂存和生产环境: -.Net Framework 3.5、2.0

我正在从事的项目的目标是.NETFramework 3.5。今天,我在这个项目中使用了C#4新的可选参数特性,效果很好。我认为VS2010正在使用C#4编译器,并且正在将带有可选参数的方法编译为IL中相应的重载方法


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

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

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


在VisualStudio2010中降低目标的好处在于,您不必意识到每一个限制。如果您的项目设置为目标3.5,并且您使用了不兼容的功能,VisualStudio将产生错误

事实上,几周前我碰到了这个。尽管项目的目标是.NET3.5,我还是使用了可选参数。您需要非常小心,因为如果您在只安装了.net 3.5运行时的计算机上安装应用程序,那么您的程序可能无法运行。在我的例子中,我使用了可选参数,夜间构建服务器只安装了3.5,因此构建失败。

+1。我自己刚试过,一个新的3.5项目允许在方法中使用可选参数。太棒了!我相信你也不能使用协方差和逆变的可能重复?或者3.5 CLR会很高兴地与之配合吗?@Timwi,@Dykam是正确的,CLR 2.0已经支持co和contra方差。这更像是对C#和VB.Net语言的错误修复。很高兴知道VS2010捕捉到了任何不受支持的新功能。谢谢大家。您的项目可能无法使用3.5构建,但是如果您可以使用4成功构建它,但目标是3.5,那么编译后的代码应该可以在3.5上运行。