是否可以为.NET编写新的应用程序?

时间:2009-03-09 06:05:58

标签: .net deployment

我即将开始一个新的Windows应用程序。它将是一个用C ++编写的音频处理工具。它将需要所有常见的GUI内容,如菜单,工具栏等。它还将具有嵌入式Web浏览器。

我正在考虑在.NET上构建它,但我想听听你们所有关于.NET是否仍然很难部署的消息。有多少百分比的常规用户已经拥有.NET运行时?我不想为我的用户带来任何痛苦,比如只需要下载100MB运行时来启动我的应用程序。

你有什么堆叠溢出者的想法?我应该去.NET还是应该坚持使用简单的'ol Win32 API?或者甚至可能是第三方系统,如QT或wxWidgets?

12 个答案:

答案 0 :(得分:22)

您可以将用户指向.Net bootstrapper,这是一个100kb的下载,它将检测他们当前拥有的.Net框架的哪些位,并将下载任何丢失的内容。

@shanselman还有http://smallestdotnet.com/倡议

答案 1 :(得分:13)

我不知道确切的数字,但是Vista内置了.NET,其他版本的Windows可以很容易地将它从Microsoft Update中删除。您还可以使用您的应用程序重新分发.NET运行时。

我不会太担心您的用户是否安装了.NET。

答案 2 :(得分:11)

微软强烈推动.NET框架非常。我相信如果没有在您的计算机上安装.NET框架,您甚至无法安装Microsoft Office 2007。因此,如果Microsoft要求.NET用于其最新的Office程序,那么您可以安全地假设您的基于Microsoft的客户将安装必备的.NET基础库。在课程中,这在很大程度上取决于您正在构建的应用程序类型。我也听说过一些视频游戏开发者用他们的开源Mono版本的.NET发布他们的游戏包。信不信由你,微软Windows实际上有一个非常强大而稳定的Mono版本。

答案 3 :(得分:5)

.Net Framework下载/安装不是 繁琐。但我建议从另一个角度来看你的问题。

如果您知道所有用户都安装了Framework,您会选择C ++还是使用.Net?由于您的GUI要求,我猜您正在使用.Net来获取它带来的所有细节。

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

考虑到所有因素,单次下载与更好的应用程序支持的权衡似乎是一个很好的。

答案 4 :(得分:2)

.NET就像Java一样 - 您需要确保适当的运行时存在。 d / l不是100mb!哈!这是196mb。但是有一个“客户档案”将它减少到26mb,所以我听到了。

部署.NET运行时是一个缺点,但对我来说,开发人员的生产力在C#中比C ++大大提高。我很乐意让我的用户忍受45秒的下载时间,以便获得更高的生产力。但那只是我。 (ps:安装程序可以自动下载所需的运行时)。

答案 5 :(得分:2)

.NET Framework 2.0 Runtime只有22MB,它是一个很好的目标框架,特别是如果你不需要WPF或WCF。 Vista用户将安装至少3.0,因此他们不需要做任何事情,并且许多其他应用程序已经定位2.0,因此他们已经安装了它。

此外,您在.NET中的应用程序将远远小于您在C ++中编写的应用程序。可执行文件在它们自身方面要小得多,并且在VS中构建安装项目所得到的MSI文件比我见过的任何其他文件都要小。

答案 6 :(得分: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仍然支持)。

答案 7 :(得分:1)

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

  • 如果您控制用户,则没有问题 - 您可以控制他们的计算机,并确保已安装.NET
  • 如果您正在谈论外部用户(对您的组织),那么我建议使用ASP.NET或Silverlight应用程序

自己决定。我可能会选择Silverlight,因为它最接近桌面应用程序(我认为你指的是),而且下载量仍然很小(我觉得像2MB)。看看http://silverlight.net

答案 8 :(得分:1)

对于我所读过的Mono(libre软件的.NET实现)附带链接器 - 您可以使用Mono编译应用程序,并将其链接到所有需要的组件。

好的部分是你将获得一个独立的软件包:如果尚未安装特定的.NET框架,则无需最终用户。缺点是:根据您使用的.NET库数量,您的可执行文件最终可能会巨大,从而无法获益。

答案 9 :(得分:0)

不是关于.Net的建议,但如果您出于某种原因决定不使用.Net,我强烈建议您使用QT而不是Win32 API。我发现Win32 API非常混乱,而且比QT更难使用,在我看来,这非常好。

答案 10 :(得分:0)

与原生C ++和Windows API甚至QT相比,.Net将使您的生活更轻松。 但是如果GUI不复杂,最好使用QT,因为.Net框架的大小相对较大

答案 11 :(得分:0)

ClickOnce API也值得研究。您可以使用它通过互联网分发您的应用程序,应用程序可以调用home来自动获取更新(如果需要)。

我现在在工作中使用它,这使得分发和更新桌面软件变得轻而易举。