8

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

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

例如。x86 32 位、x86 64 位等。

我看过一家名为“spoon”的公司http://spoon.net/但看起来它只是模拟服务器上的应用程序(有点像 citrix)。我能做些什么来解决这个困境?

4

3 回答 3

20

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

您唯一的选择是将 .NET Framework 与应用程序的安装程序捆绑在一起。使您的客户最容易做到这一点的方法是使用 Visual Studio 创建一个安装项目,如果他们还没有 .NET 固件,它将自动安装它,然后安装您的应用程序,所有这些都在一个步骤中完成。

Visual Studio 内置了对创建此类安装项目的支持,并且大部分繁琐的工作都会为您处理。文件 -> 新项目 -> 其他项目类型 -> 设置和部署 -> Visual Studio 安装程序。然后,选择“设置项目”或“设置向导”选项,然后按照说明进行操作。

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

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

于 2011-05-26T23:58:31.207 回答
2

在许多情况下,您不需要整个 .NET Framework 4.0 并且可以使用小得多的.NET Framework Client Profile。然后,您可以使用安装程序将客户端配置文件安装程序与您的应用程序捆绑到单个部署中。

没有框架就无法运行 .NET 应用程序。如果这是您的客户的部署问题,您应该考虑使用 Click-Once 安装程序(基于 Web 的自动安装和更新)或将应用程序移植到 Silverlight。

于 2011-05-26T23:57:38.773 回答
1

为了完整起见,.NET Core 版本现在也有可能部署自包含部署(SCD)。创建独立部署时,.NET Core 工具会自动包含应用程序所针对的 .NET Core 版本的最新服务运行时。

部署自包含部署有两个主要优点:

  • 您可以完全控制与您的应用一起部署的 .NET Core 版本。.NET Core 只能由您提供服务。

  • 您可以放心,目标系统可以运行您的 .NET Core 应用程序,因为您提供了它将运行的 .NET Core 版本。

这是 Scott Hanselman 的小指南

于 2019-05-23T15:31:49.407 回答