我应该使用哪个.NET Framework版本进行发布:2、3、3.5?

11

我的应用程序使用2.0版本。将来可能会想要开始使用后续框架版本中添加的新功能。我应该等到那时候再更新吗?还是现在就升级到最新的.NET 3.5有优势?

我猜在我准备好下一个春季发布时,4.0版本将已经发布。也许我应该坚持使用2.0版本进行秋季发布,并节省客户另外安装框架所需的硬盘空间和安装时间?

14个回答

8

我认为,你应该随着应用程序需要的内容一起发货。否则,你会无缘无故地延长安装时间,并且正如你所注意到的那样,再次使用客户的硬盘空间实际上没有任何意义。


这不仅仅是硬盘空间的问题——它最大化了客户已经安装必备条件的可能性,并减少了您需要对他们的计算机进行的更改数量。 - Nader Shirazie
@Nader Shirazie:那并不完全正确。例如,我有一个用.NET 2.0编写的应用程序。但是Windows 8 RP默认只启用.NET 4.0。而且,大惊小怪的是:原来.NET 4.0不向后兼容。因此,我的安装程序提示用户从Microsoft网站安装.NET 2.0。但是当您尝试安装时,Windows不会让您这样做,因为已经有了更新版本。唯一的解决方法是让用户手动从“添加程序和功能”菜单激活.NET 3.5(包括.NET 2.0),这在我看来并不是很用户友好。 - Jules Colle

7
如果你计划升级到3.5 SP1,你应该考虑使用新的.NET Framework客户端配置文件设置包
.NET 3.5 SP1为构建.NET客户端应用程序的开发人员引入了一种名为“.NET Framework客户端配置文件”的新设置包选项。这提供了一个新的安装程序,使在没有安装.NET Framework的机器上进行.NET客户端应用程序的更小、更快和更简单的安装体验。
.NET Framework客户端配置文件设置包仅包含通常用于客户端应用程序场景的.NET Framework中的那些程序集和文件。例如:它包括Windows Forms、WPF和WCF。它不包括ASP.NET以及用于服务器场景的那些库和组件。我们预计此设置包的大小约为26MB,并且可以比完整的.NET Framework设置包更快地下载和安装。
.NET Framework客户端安装包中的程序集和API与完整的.NET Framework安装包中的程序集和API完全相同(它们实际上是相同的二进制文件)。这意味着应用程序可以针对.NET 3.5 SP1的客户端配置文件和完整配置文件进行目标设置(无需重新编译)。所有使用.NET客户端配置文件设置工作的.NET应用程序自动适用于完整的.NET Framework。

2
我总是使用最新版本的框架。这可能会给用户带来一些前期负担,但应用程序在升级之间的寿命更长。这对你可能重要,也可能不重要,但请考虑以下情况:
如果您在2005年发布了一个使用.NET 1.1的应用程序,则您的应用程序运行的框架现在已经不受主流支持,并且可能存在未修补的安全漏洞或其他严重问题,Microsoft可能不会处理,而您无法在自己的代码中进行补偿。您在2008年的唯一选择是让用户立即升级其框架版本。正如我们都知道的那样,及时地让用户更新事物可能会有问题。
同样,考虑一下您在2011年的情况。如果您现在为.NET 3.5编程,则您的应用程序在出货时将更加可行。如果您现在为.NET 2.0编写代码,则在几年后,您将需要说服用户升级其框架(请记住,这段代码对他们没有任何好处),以便您可以正确支持此应用程序。
此外,如果您计划实施3.5级功能(例如LINQ to SQL),则现在为3.5版本编写代码比为2.0版本更有利,因为它将使您以后的部署问题较少。

1

记住,“对用户来说很小的负担”可能意味着您的应用程序被接受或被拒绝。

我在一家公司负责IT。我们公司的标准不是3.5。你必须有一个非常流畅的应用程序才能让我升级所有人到.NET 3.5,以便你的应用程序可以运行。换句话说,这可能不会发生。我会找到另一个不会给我们已经超载的IS部门增加额外“小负担”的应用程序。

其他人评论说,你真正要使用哪些功能。如果1.1或2.0具有您需要的真正功能集,请坚持使用它。


1

你应该使用你在测试中使用最多的.Net版本来分发你的应用程序。如果你一直在使用.Net 2.0进行开发和测试,那么就使用2.0版本进行发布。

但是为了修复自2.0版本发布以来框架中的任何错误,你可能需要对3.5版本进行测试,并选择使用它进行发布,以满足客户的需求。由于框架已经非常庞大,所以即使之前有WCF、WPF等版本,分发早期版本也没有任何好处,除非你需要支付带宽费用或目标设备的存储空间有限。


0

如果你正在使用asp.net应用程序(与Windows窗体相比),.net 3.5sp1引导程序速度太慢了。在只有.net 2.0的机器上,它会加载整个框架,这意味着在中等互联网连接和机器速度下,你需要花费大约20-30分钟的下载和安装时间。


0

请务必记住,.Net 4.0与框架以前的版本有些不同。.Net 4.0将被安装在旧版 .Net 3.5 和更早版本的 .Net 框架旁边(SxS)。如果您升级您的应用程序使用 .Net 4.0,那么您的长期用户(也就是以前的版本)将不得不安装一个全新的框架。

如果您正在考虑您的应用程序和框架会占用客户机器多少磁盘空间,那么不要忘记这个“隐藏”的额外空间使用量。如果您现在将您的应用程序从2.0升级到3.5,则您的应用程序可能能够在完整功能的情况下存在更长时间,而不会迫使用户安装另一个使用20多MB空间的第二个框架。


0

我很欣赏.NET 3.5中的新语言特性,但在你开始使用它们之前,我建议你避免升级到最新的运行时,因为这是一个更大的文件/安装包,可能会给你的用户带来麻烦。


1
“新语言特性”并不是真正存在于.NET 3.5中,而是存在于VS2008中。您仍然可以在.NET框架2.0中使用C#3。 - Will Dean
对于像LINQ和扩展方法这样的编译器特性,您不需要针对较新版本的框架进行目标设置,您需要的只是包含一个实现。例如,Mono提供了一个LINQ至对象的实现。 - Nader Shirazie

0

Linq to SQL的功能,实际上是Linq扩展的一般特性,升级后非常值得。

至于您对硬盘空间和安装时间的担忧,在我看来,对于较新的框架而言,这些问题在大多数现代系统上并不相关。较新版本的框架(3.0和3.5)实际上只是2.0框架的“刷新”。除非您的客户/市场使用较旧的PC,否则与因为他们不能冒险在硬盘上再添加20MB而失去客户的微不足道的风险相比,我认为您将获得功能和生产力方面的良好平衡,以及对开发团队的支持。(我编造了20MB的数字,有人可能会质疑这个数字)。


0

3.5框架已经发布了第一个服务包,因此比发布后更加稳定,但请注意,从2.0升级到3.5要比回退到3.5容易得多,如果您因为任何原因遇到了无法解决的问题。

维基百科文章 很好地展示了新特性。


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