编译.NET Framework 3.5而不是2.0有什么优势吗?
例如,内存消耗更少,启动更快,性能更好......
我个人认为不然,我可能错过了一些东西。
编辑:当然,3.5框架中有更多功能,但这些不是这个问题的重点。
Edit2:似乎没有任何优势。
Edit3:是的我的意思是瞄准框架。我已经安装了最新的3.5 SP1和VS 2008,那么编译和定位框架之间的区别是什么?我可以在项目选项中定位框架,但是如何使用'特定框架版本'进行编译?我不知道存在差异。
Edit4:所以现在我们同意没有优势。
感谢您的意见
答案 0 :(得分:5)
编译和定位之间存在差异。
使用(例如)C#3.0编译器编译代码可能会提高性能(无论如何都很小),因为已经包含了对生成的IL代码的一些优化。它还允许您使用一些新功能,如自动属性或lambda表达式。
针对给定框架进行定位将确保您的程序集适用于该框架(和后代),如果您的目标是2.0并使用3.5库,则会失败。除非您从一个框架替换另一个“最快”类的类,否则性能改进不会与此直接相关。例如,以.NET 1.1为目标将不允许您使用泛型,因此您将不得不使用比List慢得多的ArrayList(由于装箱和拆箱)。
答案 1 :(得分:2)
关于.NET 2.0和.NET 3.5,有两件事需要记住。
答案 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,则无法使用它们。