编译为.NET Framework 3.5相比于2.0有哪些优势?

10

编译为.NET Framework 3.5与2.0相比有什么优势吗?

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

个人认为没有,但可能我漏掉了某些东西。

编辑

  1. 当然,3.5框架中有更多的功能,但这不是本问题的重点。

  2. 似乎没有优势。

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

  4. 因此,现在我们一致认为没有优势。

8个回答

5

编译和目标有所不同。

使用(例如)C#3.0编译器编译代码可能会提高性能(不过稍微有点),因为一些生成的IL代码优化可能已经包含在内。它还允许您使用一些新功能,如自动属性或lambda表达式。

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


你说:“如果你的目标是2.0,但使用了3.5库,那么会失败。”这不是真的... .NET 3.5包括.NET 2.0...所以,任何针对2.0的东西都可以在3.5上正常运行(因为2.0已经在那里)。另一方面,如果你的目标是3.5,但只在2.0上运行,那就会有问题。 - Brian Kennedy
Brian,你不理解。如果你针对2.0框架并使用.NET 3.5库,编译器会报告一个错误,因为该库不能在2.0框架环境中使用,因此保护了你,避免在运行时部署应用程序而失败。既然你的目标是2.0框架,编译器也就保护你不会使用高级Linq调用等功能。当你针对某个版本进行开发时,就意味着你希望应用程序能够在该版本或更高版本中运行,所以你不能使用包含在后续框架版本中的库。 - Jorge Córdoba

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

1

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


1

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


1

1

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


1

如果你的.NET程序集针对.NET 3.5,生成的应用程序将查找并需要.NET 3.5库,就是这样。这些库带有许多在.NET 2.0框架中找不到的附加类,因此将其定位为目标库将是一个优势。

但是,如果您使用适用于.NET 3.5的C# 3.0编译器(例如Visual Studio 2008)编译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


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接