关于优化:.NET Framework 3.5而不是2.0编译是否有任何优势?

关于优化:.NET Framework 3.5而不是2.0编译是否有任何优势?

Are there any advantages compiling for .NET Framework 3.5 instead of 2.0?

.NET Framework 3.5而不是2.0编译有什么优势?

例如更少的内存消耗,更快的启动,更好的性能...

我个人不这么认为,但是我可能错过了一些东西。

编辑:当然,3.5框架中还有更多功能,但是这些不是此问题的重点。

Edit2:似乎没有优势。

Edit3:是的,我的意思是针对框架。 我已经安装了最新的3.5 SP1和VS 2008,因此使用框架进行编译和针对框架有什么区别? 我可以在项目选项中定位框架,但是如何"编译"特定的框架版本? 我不知道有什么区别。

Edit4:所以现在我们同意没有优势。

谢谢你的意见


编译和定位之间有区别。

使用(例如)C#3.0编译器编译代码可能会提高性能(无论如何很少),因为其中包括对生成的IL代码的一些优化。它还允许您使用一些新功能,例如自动属性或lambda表达式。

针对给定框架的目标将确保您的程序集适用于该框架(及后继者),并且如果目标为2.0并且使用3.5库,则将失败。除非您将一个框架中的一个类替换为另一个"最快"类,否则任何性能改进都不会直接与此相关。例如,针对.NET 1.1,将不允许您使用泛型,因此,您必须使用比List慢得多的ArrayList(由于装箱和拆箱)。


关于.NET 2.0和.NET 3.5,要记住两件事。

  • .NET Framework 3.5只是在.NET 2.0之上运行的几个库。
  • 在Visual Studio 2008中开发并面向.NET 2.0时,您仍然可以使用某些C#3.0语言功能(例如扩展方法),因为它们实际上是C#3.0(或.NET 3.5)编译器的功能。看到此链接:http://www.codethinked.com/post/2008/02/Using-Extension-Methods-in-net-20.aspx

  • 如果您的.NET程序集以.NET 3.5为目标,则生成的应用程序将查找并需要.NET 3.5库,仅此而已。这些库附带了.NET 2.0框架中找不到的许多其他分类,因此这将是针对这些库的优势。

    但是,如果您使用例如附带的C#3.0编译器来编译C#代码。 Visual Studio 2008,适用于.NET 3.5,但装配目标为.NET 2.0,您仍然只需要常规的.NET 2.0库,尽管它实际上使用某些.NET 3.5编译器功能,但其中许多功能最后只使用.NET 2.0代码。在此处了解更多有关此信息:http://weblogs.asp.net/shahar/archive/2008/01/23/use-c-3-features-from-c-2-and-net-2-0-code。 aspx


    我相信每个版本的Visual Studio都附带一个不同的编译器。例如,对于C#,Visual Studio 2005附带的2.0编译器和Visual Studio 2008附带的C#3.0。根据所使用的Visual Studio版本,最终会使用不同的编译器。

    定位框架是指在编译过程中要定位的框架版本。定位框架是Visual Studio 2008的新功能。例如,我可以在Visual Studio 2008中打开一个解决方案,并以.Net为目标v2.0。结果将是在编译期间我无法使用任何3.0或3.5 .Net功能,例如WPF。


    我认为您必须要针对.NET 3.5框架进行编译?如果是这样,那么正如其他人所说,我相信您不会看到太大的不同。

    但是,如果您正在谈论使用更新的编译器,则在以下链接中对C#和VB进行了各种更改和中断更改:

    • C#3.0和SP1编译器
      唱诗
    • Visual Basic的新增功能
      编译器
    • Visual Basic 2008突破
      变化

    如果您没有使用该框架版本中的任何类,则编译到3.5框架没有任何好处。


    我还没找到如果您不需要3.5特定功能,则明显的缺点是3.5代码库更年轻,因此有可能(尽管不太可能)潜伏着一些错误。


    3.5具有2.0没有的类。例如Func <...>。如果您的目标是2.0,则不能使用它们。


    推荐阅读

      linux看剩余内存命令?

      linux看剩余内存命令?,系统,情况,工具,信息,分析,状态,实时,命令,内存,总量,L

      查询linux内存命令?

      查询linux内存命令?,系统,情况,信息,工具,电脑,状态,命令,内存,发行,总量,查

      linux启动项加命令行?

      linux启动项加命令行?,系统,工作,项目,地址,命令,首页,数字,管理,服务,信息,

      linux查内存命令6?

      linux查内存命令6?,情况,系统,信息,工具,数据,内存,命令,单位,环境,方法,查看

      linux下sh启动命令?

      linux下sh启动命令?,服务,标准,文件,工具,软件,权限,命令,脚本,终端,目录,Lin

      服务启动linux命令?

      服务启动linux命令?,服务,密码,信息,系统,名称,命令,文件,用户,下面,服务器,l

      linux中编译命令是?

      linux中编译命令是?,系统,代码,工具,基础,名字,命令,编译器,文件,终端,源程

      linux终端编译命令?

      linux终端编译命令?,代码,工具,环境,系统,终端,文件,源程序,编译器,语言,指

      linux性能检测命令?

      linux性能检测命令?,系统,情况,信息,状态,工具,实时,百分比,指标,分析,命令,

      linux修改内存命令?

      linux修改内存命令?,系统,信息,标准,工具,数据,在线,内存,命令,分区,大小,Lin

      linux启动进命令行?

      linux启动进命令行?,系统,首页,密码,工具,终端,情况,电脑,数字,界面,命令,如

      linux启动蓝牙命令?

      linux启动蓝牙命令?,设备,手机,系统,蓝牙,电脑,管理,网络,密码,通讯,信息,Lin

      linux启动进去命令行?

      linux启动进去命令行?,系统,工具,首页,电脑,终端,材料,密码,命令,快捷键,窗

      linux历史命令内存?

      linux历史命令内存?,系统,情况,信息,数据,命令,内存,文件,磁盘,历史,内容,Lin

      linux启动显示命令行?

      linux启动显示命令行?,系统,密码,终端,状态,首页,情况,基础,电脑,信息,工具,l

      linux命令行启动登陆?

      linux命令行启动登陆?,密码,系统,电脑,地址,设计,代码,项目,连续,工具,庞大,L

      linux的u盘启动命令?

      linux的u盘启动命令?,系统,电脑,工具,信息,软件,网上,名称,工作,设备,通用,从

      linux防火墙命令启动?

      linux防火墙命令启动?,系统,状态,管理,密码,服务,工具,防火墙,网络,信息,软

      linux怎么看内存命令?

      linux怎么看内存命令?,系统,情况,信息,命令,内存,工具,发行,数据,表示,内容,l

      linux历史命令内存?

      linux历史命令内存?,系统,情况,信息,数据,命令,内存,文件,磁盘,历史,内容,Lin