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

2023-11-27

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

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

例如。 x86 32 位、x86 64 位等

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


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

您唯一的选择是将 .NET Framework 与应用程序的安装程序捆绑在一起。对客户来说最简单的方法是使用 Visual Studio 创建一个安装项目,如果客户还没有 .NET 固件,该项目将自动安装它,然后安装您的应用程序,所有这一切都只需一个步骤即可完成。

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果用户没有安装 .NET,如何部署 C# 应用程序? 的相关文章

随机推荐

  • 如何修复 Plesk 中的 FastCGI 超时问题?

    PHP 支持当前设置为 作为 Fast CGI 运行 我的服务器日志中不断收到这些错误 mod fcgid 45秒内读取数据超时 脚本标头过早结束 index php 我认为应该快速修复 但我找不到要编辑的文件 这是我可以从 Plesk 更
  • firebase Analytics:Android 应用程序卸载统计信息

    我安装了 Firebase SDK 并将以下两行添加到 MainActivity java private FirebaseAnalytics mFirebaseAnalytics mFirebaseAnalytics FirebaseAn
  • html 正文小于其内容

    这是一个基本的插图问题的
  • 在 R 图中的 x 轴下方添加箭头

    我正在尝试在 R 图中的 x 轴下方添加标记特定 x 坐标的箭头 我的 x 轴位于 y 0 并且当我尝试在中使用负 y 坐标时arrows 因此箭头将垂直于 x 轴 我只绘制了箭头的边缘 尽管有一些空间 例如绘制 x 轴标签和刻度线的位置
  • 使用 FullAjaxExceptionHandler 时 h:body 不会重新渲染

    我正在使用 OmniFacesFullAjaxExceptionHandler显示错误页面 错误页面显示正确 但我在这些页面的样式方面遇到问题 我的应用程序使用的模板在 body 元素上定义了 CSS 类 这些类对于正常页面和错误页面是不同
  • Struts 中的控制器

    MVC 中的控制器是什么 Is it struts xml or Servlet 动作类 我们可以有多个吗Controller在我们的应用程序中 拥有多个控制器是一种好的做法吗 在 Struts 中 应用程序控制器层代码 功能分为两部分 A
  • Ruby 中的每个方法和收集方法有什么不同[重复]

    这个问题在这里已经有答案了 从这段代码我不知道这两种方法之间的区别 collect and each a L Z J collect x puts x succ gt M AA K print a class gt Array b L Z
  • 文本块的数据触发器

    我有一个 Textblock 如果属性为 True 或 False 我会尝试更改 Text 属性的值 我遇到的问题是 该标志可能会在屏幕上的不同事件 来自其他组合框的 onchange 事件 上更改 我不确定如何让这个数据触发器工作 因为我
  • 如何在 Windows 中为 Google Chrome 创建 PPAPI 插件?

    我是 PPAPI 开发的新手 并且已经从以下位置下载了已经的示例here 然而 即使在遇到了文档 我无法构建该项目 我有 Microsoft Visual Studio 2010 Windows 操作系统和 Chrome 30 0 1599
  • 在线 Node.js 服务器

    Node js 是否足够成熟 可以在其中构建整个 Web 应用程序 我的意思是完全在 Node js 中 我在某处读到 出于某种原因 Node js 后面应该有 例如 nginx 这是真的吗 Node js 不能独立存在吗 有没有基于 No
  • MongoDB 计数集合 Node.js

    我正在尝试通过 Node js 与 MongoDB 交互 但在使用 count 方法时遇到了一些问题 我在用节点 mongodb native看起来我正在做的事情应该有效 我的代码示例 var get total num docs func
  • 我可以使用 MERGE INTO 来模拟 Apache Derby 中的“upsert”吗?

    我们正在使用 Derby 并且有很多代码 如下所示 try ResultSet rs executeQuery if rs next updateRowSet rs rs updateRow else executeUpdate 过去 我们
  • 使用 Jackson 反序列化通用类型

    我正在尝试创建一个使用 Jackson 来反序列化 POJO 的类 看起来像这样 public class DeserialiserImp
  • 使用负索引从 pyspark 字符串列的最后一个索引中子串多个字符

    密切相关 Spark Dataframe 列与其他列的最后一个字符但我想从中提取多个字符 1 index 我有以下 pyspark 数据框df number event type 0342224022 11 0112964715 11 我想
  • Objective-C 中的非规范化浮点数?

    Stack Overflow 问题 答案的相关性是什么为什么将 0 1f 更改为 0 会使性能降低 10 倍 对于 Objective C 如果有任何相关性 这应该如何改变我的编码习惯 有没有办法在 Mac OS X 上关闭非规范化浮点 看
  • 如何使用 Jest 模拟第三方 React 组件?

    TLDR 模拟从第三方库导入的 React 组件的正确方法是什么 我正在测试一个名为
  • 有没有一种简单的方法来输出按列的 CSV?

    我正在尝试将多个不同长度的数据列表输出到 CSV 文件 每个列表应该是输出 CSV 文件中的一列 有直接的方法吗 如果我将每个列表作为一行输出 我只需循环每个列表并在到达末尾时输出返回 但这种方法在按列工作时不起作用 我想过一次逐项检查所有
  • 与 Google Reader 同步时如何跳过已知条目?

    为了将离线客户端写入 Google Reader 服务 我想知道如何最好地与该服务同步 似乎还没有官方文档 到目前为止我找到的最好的来源是 http code google com p pyrfeed wiki GoogleReaderAP
  • 我想将子数组添加到 php 中的一个数组中[重复]

    这个问题在这里已经有答案了 我有这样的数组 Array 0 gt Array 0 gt rose 1 gt monkey 2 gt donkey 1 gt Array 0 gt daisy 1 gt monkey 2 gt donkey 2
  • 如果用户没有安装 .NET,如何部署 C# 应用程序?

    我有一个 C 程序 我想将其提供给我的用户 但问题是它需要 NET Framework 版本 4 0 这是一个问题 因为它是最近发布的 2010 年 4 月 很多人可能还没有它 更糟糕的是 下载和安装框架需要一段时间 约 10 分钟 有什么