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

时间:2008-09-15 20:45:12

标签: .net optimization compiler-construction frameworks

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

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

我个人认为不然,我可能错过了一些东西。

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

Edit2:似乎没有任何优势。

Edit3:是的我的意思是瞄准框架。我已经安装了最新的3.5 SP1和VS 2008,那么编译和定位框架之间的区别是什么?我可以在项目选项中定位框架,但是如何使用'特定框架版本'进行编译?我不知道存在差异。

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

感谢您的意见

8 个答案:

答案 0 :(得分:5)

编译和定位之间存在差异。

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

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

答案 1 :(得分:2)

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

  1. .NET Framework 3.5只是一些在.NET 2.0之上运行的库。
  2. 在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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

我认为你必须指的是针对编译的.NET 3.5框架?如果是这样,那么就像其他人所说的那样,我不相信你会看到很多不同。

但是,如果您正在讨论使用更新的编译器,那么在以下链接中有针对C#和VB描述的各种更改和中断更改:

答案 5 :(得分:1)

我相信每个版本的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。

答案 6 :(得分:1)

如果您的.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

答案 7 :(得分:0)

3.5具有2.0不具备的类。 FUNC< ...>例如。如果您的目标是2.0,则无法使用它们。