为 .NET Framework 3.5 而不是 2.0 编译有什么优势吗?
例如更少的内存消耗,更快的启动,更好的性能......
我个人不这么认为,但我可能错过了一些东西。
编辑
当然3.5框架还有更多的特性,但这些都不是本题的重点。
好像没什么优势。
是的,我的意思是针对框架。我已经安装了最新的 3.5 SP1 和 VS 2008,那么编译和定位框架有什么区别?我可以在项目选项中定位框架,但如何“编译”特定的框架版本?我不知道有什么不同。
所以现在我们同意没有优势。
为 .NET Framework 3.5 而不是 2.0 编译有什么优势吗?
例如更少的内存消耗,更快的启动,更好的性能......
我个人不这么认为,但我可能错过了一些东西。
当然3.5框架还有更多的特性,但这些都不是本题的重点。
好像没什么优势。
是的,我的意思是针对框架。我已经安装了最新的 3.5 SP1 和 VS 2008,那么编译和定位框架有什么区别?我可以在项目选项中定位框架,但如何“编译”特定的框架版本?我不知道有什么不同。
所以现在我们同意没有优势。
编译和定位是有区别的。
使用(例如)C# 3.0 编译器编译代码可能会提高性能(无论如何很少),因为可能已包含对生成的 IL 代码的一些优化。它还允许您使用一些新功能,例如自动属性或 lambda 表达式。
以给定框架为目标将确保您的程序集适用于该框架(和后验框架),并且如果您针对 2.0 并使用 3.5 库,则会失败。除非您将一个框架中的一个类替换为另一个“最快”类,否则不会有任何性能改进与此直接相关。例如,针对 .NET 1.1 将不允许您使用泛型,因此您必须使用比 List 慢得多的 ArrayList(由于装箱和拆箱)。
关于 .NET 2.0 和 .NET 3.5,有两点需要记住。
我还没有找到。如果您不需要 3.5 的特定功能,一个明显的缺点是 3.5 代码库更年轻,因此可能(尽管不太可能)存在一些潜伏的错误。
如果您不使用该框架版本中的任何类,则编译到 3.5 框架没有任何好处。
我认为您的编译目标一定是 .NET 3.5 框架?如果是这样,那么正如其他人所说,我不相信你会看到太大的不同。
但是,如果您正在谈论使用更新的编译器,那么在以下链接中描述了 C# 和 VB 的各种更改和中断更改:
我相信每个版本的 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 程序集以 .NET 3.5 为目标,则生成的应用程序将查找并需要 .NET 3.5 库,仅此而已。这些库带有许多在 .NET 2.0 框架中没有的附加类,因此这将是针对这些库的优势。
但是,如果您使用 Visual Studio 2008 附带的适用于 .NET 3.5 的 C# 3.0 编译器编译 C# 代码,但您的程序集目标是 .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
3.5 有 2.0 没有的类。例如 Func<...>。如果你的目标是 2.0,你就不能使用它们。