10

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

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

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

编辑

  1. 当然3.5框架还有更多的特性,但这些都不是本题的重点。

  2. 好像没什么优势。

  3. 是的,我的意思是针对框架。我已经安装了最新的 3.5 SP1 和 VS 2008,那么编译和定位框架有什么区别?我可以在项目选项中定位框架,但如何“编译”特定的框架版本?我不知道有什么不同。

  4. 所以现在我们同意没有优势。

4

8 回答 8

5

编译和定位是有区别的。

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

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

于 2008-09-15T20:50:24.640 回答
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
于 2008-09-15T21:26:55.723 回答
1

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

于 2008-09-15T20:48:16.037 回答
1

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

于 2008-09-15T21:58:05.307 回答
1

我认为您的编译目标一定是 .NET 3.5 框架?如果是这样,那么正如其他人所说,我不相信你会看到太大的不同。

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

于 2008-09-16T01:35:45.690 回答
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。

于 2008-09-16T02:08:42.473 回答
1

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

于 2008-09-16T12:27:40.520 回答
0

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

于 2008-09-15T20:47:36.707 回答