与 2.0 相比,针对 .NET Framework 3.5 进行编译有什么优势吗?

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

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

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

编辑2:好像没有什么优点。

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

编辑4:所以目前我们一致认为没有任何优势。

谢谢各位的意见

有帮助吗?

解决方案

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

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

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

其他提示

关于 .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

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

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

我猜您的意思一定是针对 .NET 3.5 框架进行编译?如果是这样,那么正如其他人所说,我不相信您会看到太大的差异。

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

我相信每个版本的 Visual Studio 都会附带不同的编译器。例如,对于 C#,2.0 编译器随 Visual Studio 2005 附带,而 C# 3.0 则随 Visual Studio 2008 附带。根据您使用的 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 框架中未找到的许多附加类,因此这将是针对这些库的优势。

但是,如果您使用附带的 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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top