使用.NET进行基于Windows Forms的产品开发

3
.NET已成为软件开发人员和消费者之间流行的技术。我在思考是否明智决定使用.NET开发基于Windows Forms的产品,供全球数千名客户下载。真正的问题可能是随着.NET版本的增长,框架安装变得越来越庞大。
v2.0有一个不错的22MB安装包,但最新的v3.5超过了150MB,可能会成为客户决策的关键因素。我听说过一些工具可以对.NET程序集进行“静态”链接(例如ILMerge),可以用于创建小型自包含可执行文件,但问题是这些工具能否在生产环境中使用?ILMerge工具是一个研究工具,我认为它从未被安装到VS中。
我需要开发一个需要非常漂亮的用户界面的产品,这可以通过WPF支持实现。但我不确定客户是否愿意为一个4MB的应用程序下载一个150MB的框架(不确定v3.0有多大)。如果我使用.NET 2.0进行开发,则失去了对WPF的支持。XP、Vista、Windows 7是否预装了.NET框架?
--根据评论更新--
该应用程序将从网站下载,不会有可分发介质。
  1. Use .NET 2.0 - This wont let me use WPF so I will loose on the fancy stuff unless I use some third party skinning tool.
  2. Use the Client Profile to strip down the installation - The installation will come down to around 30 Megs and I will retain WPF/WCF support along with the new framework features.
  3. Supported OSes

      Win 98, ME, 2000 - Full install of Runtime required
      Win XP SP2, SP3, 2003 (I think these have .NET 2.0)
      Vista, 2008 - All version have atleast v3.0
      Windows 7 - v3.5
    

只是为了强调下面某些答案中的内容,150MB是完整框架,您可以选择_Client_子集。 - H H
8个回答

4

不同版本的.NET框架已经 预装在Vista和Windows 7上:

  • XP - 无
  • Vista - .NET 3.0
  • Windows 7 - .NET 3.5

如果您真的关心下载大小,您应该看一下客户端配置文件。这是一个精简版的框架,仅包括客户端应用程序开发最重要的部分。我相信其大小约为30 MB。在3.5中对其的支持有些零散。它只适用于XP 32位,并且只有没有安装其他框架版本时才能使用,但在4.0中看起来要好得多。它现在适用于所有支持完整.NET框架的平台,即使它们已经有另一个框架版本,并以可重新分发的形式和Web安装程序提供请参见此处

超越技术细节,你需要考虑你的目标市场。不同的市场有不同的基准和要求。如果你正在物理分发媒体,记住你可以将.NET安装程序与应用程序捆绑在一起放在一个CD上。我认为在大多数情况下这不应该是一个问题(特别是如果你针对客户端配置文件),只有当你针对具有非常严格的软件允许要求的特定小市场部门时,我才会感到担忧。

3
如果您担心安装大小,那么我建议您针对 .Net 2.0 框架而不是 .Net 3.5 框架进行开发——如果您只是在做一个基本的 Windows 窗体应用程序(没有 WCF、WPF 或 Linq 等),那么 .Net 2.0 框架具有 .Net 3.0 或 3.5 的 90% 功能,并且它也存在于更高比例的机器上(根据这篇博客,达到了80%)。

在 VS2008 中,我修改了我的项目模板,使其成为默认设置。


1

对于网络连接较慢的用户来说,这确实可能是一个问题。一种解决方案是限制开发不使用较新的功能(这就是我所做的),并在应用程序安装说明网页上提供 .NET 2.0 运行时的链接。这对于 Windows Forms 来说可以正常工作(虽然无法使用 WPF 和一些较新的语言特性)。


这总是一个选项,彼得(提供框架下载链接)。此外,.NET应用程序安装程序本身提供了报告和安装缺少框架的功能。 - A9S6

1

0

我不认为它是一个决定性的因素,大部分时间都不是。我相信 Vista 已经预装了 .NET 3.0。此外,Java 也是同样的情况(需要 JRE),我不知道有哪些软件真正因为下载类似 Java 或 .NET 的运行时平台而遭受了“开销”问题。

我强烈认为最好将这些平台视为事实上的标准; 如今许多应用程序都需要它们; 很有可能大多数潜在用户已经安装了它们。


0
好的,让我问一个愚蠢的问题。为什么你限制自己只做一个独立的桌面客户端而不是一个Web应用程序?你可以使用Silverlight来完成一些花哨的事情。我曾经与之合作过的一个客户在市场上有一个独立的客户端,但最终想要将其移动到Web上,因为他需要Mac用户。

我不认为像注册表和系统清理器这样的应用程序可以作为Web应用程序开发。这将涉及到很多安全问题,而且有些应用程序只适合桌面模型。 - A9S6

0

让客户下载一个1GB的框架,使其变得如此美妙 :)

现在说正经的,由于XP及以上版本都预装了.NET,你还担心什么呢?

你可以暂时只针对.NET 2.0进行开发(除非你已经致力于WPF),等到3.5足够流行时再进行切换。


0
如果不需要离线安装.NET,则可以使用在线安装程序,实际下载大小将低于60兆字节(取决于已安装的内容)。

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