我有一个C#程序,我想让我的用户可以使用,但问题是它需要.NET framework 4.0版。这是一个问题,因为它最近刚刚发布(2010年4月),很多人可能都没有。更糟糕的是,下载和安装框架需要一段时间(约10分钟)。
有什么方法可以安装我需要的框架的一部分吗?如果不可能,我可以将代码编译为特定系统的本机二进制文件
例如。 x86 32位,x86 64位等
我看过一家名为'spoon'http://spoon.net/的公司,但看起来它只是模仿服务器上的应用程序(有点像citrix)。我该怎么做才能解决这个难题?
答案 0 :(得分:21)
任何想要运行程序的人都需要安装相应版本的.NET Framework。没有办法解决这个问题。老实说,这个问题经常被问到这个问题让我很惊讶。您无法将.NET代码编译为任何类型的“本机二进制文件”,并且您不能仅分发您需要的框架部分。如果所有这一切对您都很重要,那么您应该在开始时选择不同的开发平台。
您唯一的选择是将.NET Framework与应用程序的安装程序捆绑在一起。使客户最简单的方法是使用Visual Studio创建一个安装项目,如果他们还没有安装.NET FW,则会自动安装.NET FW,然后在一个步骤中安装您的应用程序。 / p>
Visual Studio内置支持创建这样的安装项目,并且大部分脏工作都是为您处理的。档案 - >新项目 - >其他项目类型 - >设置&部署 - > Visual Studio安装程序。然后,选择“安装项目”或“安装向导”选项,并按照说明进行操作。
自从您为.NET 4.0开发以来,唯一要记住的是该框架有两个版本:完整版和“客户端配置文件”。客户端配置文件尝试完全按照您提及并仅安装典型应用程序使用的框架部分。您必须首先弄清楚这是一个部署选项。如果您的程序使用客户端配置文件中不可用的类,则需要安装完整版本。否则,您可以考虑安装客户端配置文件,这是VS 2010中针对.NET 4.0的所有新项目的默认设置。在项目属性下检查应用程序的“目标框架”设置。如果它尚未设置为Client Profile,请尝试更改它并查看它是否会编译。这是判断此部署选项是否可用的最快捷方式。但是这两个框架之间的大小只有大约15%的差异,所以如果你必须部署完整版本,这并不是什么大不了的事。
无论哪种方式,安装项目都会自动确定并捆绑您应用的正确版本。绝对不要让用户单独下载和运行.NET安装程序。使用安装项目并自动为它们执行此操作。如果您没有VS或者不想使用它提供的那个,请研究替代方案,例如Inno Setup,它们也支持使用应用程序部署和安装.NET运行时。
答案 1 :(得分:2)
在许多情况下,您不需要整个.NET Framework 4.0,并且可以使用更小的.NET Framework Client Profile。然后,您可以使用安装程序将客户端配置文件安装程序与您的应用程序捆绑到一个部署中。
没有框架,您无法运行.NET应用程序。如果这是您的客户的部署问题,则应考虑使用Click-Once安装程序(基于Web的自动安装和更新)或将应用程序移植到Silverlight。
答案 2 :(得分:1)
为了完整性起见,.NET Core发行版部署Self-Contained Deployments(SCD)现在也有可能。创建独立的部署时,.NET Core工具会自动包含应用程序针对的.NET Core版本的最新服务运行库。
部署独立的部署有两个主要优点:
您可以完全控制与应用程序一起部署的.NET Core版本。 .NET Core只能由您提供服务。
您可以放心,目标系统可以运行.NET Core应用程序,因为您提供了将在其上运行的.NET Core版本。
这是Scott Hanselman的一小guide。