现在编写.NET新应用程序是否可行?

8
我即将开始制作一款新的 Windows 应用程序。这是一个使用 C++ 编写的音频处理工具,需要包含所有常规 GUI 元素,如菜单、工具栏等。它还将嵌入一个网页浏览器。
我考虑使用 .NET 构建它,但我想听听大家对于 .NET 是否仍然难以部署的看法。普通用户中已经安装了 .NET 运行时的百分比是多少?我不想给我的用户带来任何痛苦,例如下载 100MB 的运行时才能启动我的应用程序。
你们这些 Stack Overflow 的专业人士认为呢?我应该使用 .NET 还是坚持使用 Win32 API?或者可能使用第三方系统,如 QT 或 wxWidgets?

你需要考虑你的目标受众并确定这是否对他们构成问题。在我目前工作的企业环境中,我们的工作站没有部署.NET 3.5。因此,我目前必须针对.NET 3.0进行开发。 - bruceatk
据我所知,3.5很快就会通过Windows更新推出。 - Echostorm
12个回答

22
您可以将您的用户指向.Net引导程序,它是一个100kb的下载,将检测他们当前拥有的 .Net框架的哪些部分,并下载缺失的任何内容。
还有来自@shanselman的倡议http://smallestdotnet.com/

13

我不知道具体数字,但Vista已经内置了.NET,并且其他版本的Windows可以通过Microsoft Update轻松获取它。你还可以将.NET运行时与你的应用程序一起重新分发。

我不会过于担心你的用户是否安装了.NET。


不同版本的.Net仍然可能会成为一个问题。例如,没有任何操作系统附带.Net 3.5。如果你想要针对它进行开发,就必须期望用户自行安装。 - Steve Rowe
不必太担心用户是否安装了.NET,我认为这不应该是一个问题!! - Ahmed

11

微软正在大力推动.NET框架。我相信,即使是安装Microsoft Office 2007也必须在电脑上安装.NET框架。因此,如果微软要求.NET作为其最新Office程序的前置条件,那么您可以肯定地认为,使用微软产品的客户已经安装了必备的.NET基础库。当然,这将大大取决于您构建的应用程序类型。我还听说一些视频游戏开发者会通过打包开源Mono版本的.NET来发布他们的游戏。信不信由你,在Microsoft Windows上实际上有一个非常稳定的Mono版本。


不行 - 这对我来说是新的。没有安装.NET就不能安装Office 2007?从未听说过。有一些Office组件使用.NET...我相信Outlook 2007的BCM就是其中之一。但MSWord和MSExcel不需要它。 - Cheeso

5

.Net Framework的下载/安装并不是很麻烦。但我建议从另一个角度来考虑您的问题。

如果您知道所有用户都已安装了框架,您会选择C++还是使用.Net?由于您的GUI要求,我猜想您正在使用.Net,因为它为您提供了许多好处。

您列出的其他选项可能是可以接受的,但很难击败.Net Framework在客户端组件方面的支持。

综合考虑,一个单一的下载与更好的应用程序支持之间的权衡似乎是一个不错的选择。


2

.NET就像Java一样——你需要确保正确的运行时环境已经安装好了。下载大小不是100MB!哈哈!它是196MB。但是我听说有一个“客户端配置文件”可以将其缩小到26MB。

部署.NET运行时环境是一个缺点,但对我来说,使用C#比使用C++提高了开发人员的生产力。为了获得更高的生产力,我很乐意让我的用户忍受45秒的下载时间。但这只是我的看法。(附注:安装程序可以自动下载所需的运行时环境)。


你会很高兴地惹恼你的用户!当然,谁又关心他的用户呢? - hasen
没错!他们花45秒的时间,对我来说值得节省4周的头疼。 - Cheeso
同时为其他 .Net 软件节省下载时间。 - Greg D

2
.NET Framework 2.0运行库只有22MB,是一个很好的框架目标,特别是当你不需要WPF或WCF时。Vista用户将至少安装3.0,所以他们不需要做任何操作,很多其他应用程序也已经以2.0为目标,因此已经安装了它。
此外,使用.NET编写的应用程序会比使用C++写的应用程序小得多。可执行文件本身就更小,而在VS中构建设置项目生成的MSI文件要比我见过的其他任何东西都小得多。

不是在添加运行时时。将系统从没有.NET到3.5是一个重要的下载,我曾经在几个系统上第一次安装失败。 - bruceatk
这并不会使我的答案变得无效。除非您需要一些新技术,否则今天您不需要3.5。另外,如果安装失败了,可能是由于缺少先决条件导致的。 - Dave Van den Eynde
我正在评论你的"The executables are a lot smaller..."。我总是必须考虑我要传递的完整负载及其依赖项。 - bruceatk
但是你并不需要提供.NET Framework。你的客户可能不需要它。事实上,他们更可能不需要它。 - Dave Van den Eynde

2
我们向不同行业的客户部署多种应用程序,目前.NET Framework 2.0没有任何问题。(而且它只需要22 MB的下载。)你仍然可以使用Visual Studio 2008和C#,但你必须选择.NET 2.0作为目标框架,并且必须使用Windows Forms代替WPF进行GUI(这可能取决于你的经验)。
.NET Framework 3.0和3.5(以及3.5 SP1等)在公司网络中似乎还不太流行;它要大得多,在安装过程中存在更多潜在的问题,并且不再支持Windows 2000和Windows 98(而.NET 2.0仍然支持)。

1

你正在构建什么样的应用程序?这非常重要。如果你担心用户:

  • 如果你控制你的用户,那就没有问题 - 你控制他们的机器,并且你可以确保.NET已经安装
  • 如果你谈论的是外部用户(不属于你的组织),我建议使用ASP.NET或Silverlight应用程序

自己决定。我可能会选择Silverlight,因为它最接近桌面应用程序(我想你指的是它),而且下载非常小(我猜大约2MB左右)。看看 http://silverlight.net


我强烈怀疑声音编辑是你想在在线应用程序中完成的事情。 - Boris Callens

1
据我所知,Mono(自由软件的.NET实现)附带有一个链接器-您可以使用Mono编译应用程序,并将所有必需的组件链接到它。
好处是,您将获得一个独立的软件包:如果终端用户尚未安装特定的.NET框架,则无需安装。缺点是,取决于您使用了多少个.NET库,您的可执行文件可能会变得非常大,从而抵消优势。

0

虽然我不是专家,但如果你因为某种原因决定不使用.Net,我强烈建议你使用QT而不是Win32 API。我发现Win32 API非常混乱且比QT难用得多,而在我看来,QT真的很好用。


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