如果用户没有安装.NET,我该如何部署C#应用程序?

Dai*_*tsu 8 .net c# native .net-4.0 binaries

我有一个C#程序,我想让我的用户可以使用,但问题是它需要.NET framework 4.0版.这是一个问题,因为它最近刚刚发布(2010年4月),很多人可能都没有.更糟糕的是,下载和安装框架需要一段时间(约10分钟).

有什么方法可以安装我需要的框架的一部分吗?如果不可能,我可以将代码编译为特定系统的本机二进制文件

例如.x86 32位,x86 64位等

我看过一家名为'spoon'的公司http://spoon.net/,但看起来它只是在服务器上模拟应用程序(有点像citrix).我该怎么做才能解决这个难题?

Cod*_*ray 21

任何想要运行程序的人都需要安装适当版本的.NET Framework.没有办法解决这个问题.老实说,这个问题被问到的频率让我很惊讶.您无法将.NET代码编译为任何类型的"本机二进制文件",并且您不能仅分发您需要的框架部分.如果所有这一切对您都很重要,那么您应该在开始时选择不同的开发平台.

您唯一的选择是将.NET Framework与应用程序的安装程序捆绑在一起.使客户最简单的方法是使用Visual Studio创建一个安装项目,如果他们还没有安装.NET FW,则会自动安装它,然后安装您的应用程序,所有这一切都在一个步骤中完成.

Visual Studio内置支持创建这样的安装项目,并且大部分脏工作都是为您处理的.文件 - >新建项目 - >其他项目类型 - >设置和部署 - > Visual Studio安装程序.然后,选择"安装项目"或"安装向导"选项,并按照说明进行操作.

自从您为.NET 4.0开发以来,唯一要记住的是该框架有两个版本:完整版和"客户端配置文件".客户端配置文件尝试完全按照您提及并仅安装典型应用程序使用的框架部分.您必须首先弄清楚这是一个部署选项.如果您的程序使用客户端配置文件中不可用的类,则需要安装完整版本.否则,您可以考虑安装客户端配置文件,这是VS 2010中针对.NET 4.0的所有新项目的默认设置.在项目属性下检查应用程序的"目标框架"设置.如果它尚未设置为Client Profile,请尝试更改它并查看它是否会编译.这是判断此部署选项是否可用的最快捷方式.但是这两个框架之间的大小只有大约15%的差异,所以如果必须部署完整版本,那么这并不是什么大不了的事.

无论哪种方式,安装项目都会自动确定并捆绑您应用的正确版本.绝对不要让用户单独下载和运行.NET安装程序.使用安装项目并自动为它们执行此操作.如果您没有VS或者不想使用它提供的那个,请研究替代方案,例如Inno Setup,它也支持使用应用程序部署和安装.NET运行时.

  • @Daisetsu:这真的不是太多的开销。请记住,如果您使用任何现代版本的 VS 进行开发,您仍然需要包含 C 运行时的更新版本。我想它比 .NET 小,但我无法想象当它包含在您的应用程序中时,这真的会产生如此大的不同。没有真正的方法可以完全避免依赖。关键在于让安装过程对用户来说无痛且透明。它*不是*关键更新,并且[Windows 不是 .NET Framework 交付渠道](http://blogs.msdn.com/b/oldnewthing/archive/2011/04/04/10149346.aspx)。 (2认同)