Windows 窗体应用程序包括 .net 框架

Posted

技术标签:

【中文标题】Windows 窗体应用程序包括 .net 框架【英文标题】:Windows form application include .net framework 【发布时间】:2018-12-31 11:22:50 【问题描述】:

我使用clickOnce 发布了一个 Windows 窗体应用程序。

当我尝试在不用于开发的计算机上安装该应用程序时,安装程​​序开始下载并安装整个.net 4.5.2 framework,这需要很长时间。

我的问题很简单:是否可以在应用程序中以某种方式包含 .net 框架,这样它就不必提示用户安装它?

【问题讨论】:

【参考方案1】:

右键单击您的项目>>属性>>发布

有一个选项可以为您的应用程序定义先决条件。单击它并选择要包含在包中的 .net 框架。

确保选择从与您的应用程序相同的位置下载先决条件的选项,以便将其包含在包中 -

【讨论】:

【参考方案2】:

如果您的应用程序面向完整的 .NET Framework:不,您不能(本机)。它需要安装在客户端机器上。有可用的第三方工具,如 TurboStudio* 应该可以让您完成此操作。我的猜测是,这也会减慢最终用户的体验。它会在每次应用程序运行时这样做,而不仅仅是第一次。

直接从 ClickOnce 安装 .NET 框架安装 How to: Include prerequisites with a ClickOnce application。

在您可以使用 ClickOnce 应用程序分发必备软件之前,您必须首先将这些必备软件的安装程序包下载到您的开发计算机。当您发布应用程序并选择从与我的应用程序相同的位置下载先决条件时,如果安装程序包不在 Packages 文件夹中,则会发生错误。

使用 Package.xml 添加安装程序包 1. 在文件资源管理器中,打开 Packages 文件夹。 2. 打开要添加的先决条件的文件夹,然后打开已安装的 Visual Studio 版本的语言文件夹(例如,en 表示英语)。 3. 在记事本中,打开 Package.xml 文件。 4. 找到包含http://go.microsoft.com/fwlink 的Name 元素,然后复制URL。包括 LinkID 部分。 5. 将 URL 粘贴到浏览器的地址栏中,然后在提示您运行或保存时,选择保存。 6. 将文件复制到先决条件的根文件夹。

您现在可以将安装程序包与您的应用程序一起分发。

*取自这篇 SO 帖子:Running .net based application without .NET Framework

【讨论】:

【参考方案3】:

好吧,.NET Core 3.0 (Still in preview) supports WinForms and WPF 并有一个 self-contained deployment 选项,但我必须告诉它至少 40 MB,因为每个部署还包含所有相关的 .NET 库。

但是,所有 Windows 计算机上都默认安装了some version of .NET Framework,并且 Windows 更新也会更新 .NET 框架版本。而且很多程序都需要 .NET 框架,所以大多数时候这没什么大不了的。

【讨论】:

我在 GitHub 上读到有人说这是一个糟糕的主意,因为他的部署规模要大得多。有没有办法防止这种情况(某种方式让软件自己获取 dll 并且设置非常小)

以上是关于Windows 窗体应用程序包括 .net 框架的主要内容,如果未能解决你的问题,请参考以下文章

温故知新,.Net Core遇见WinForms客户端窗体框架,在DotNet Core大一统基础上老树发芽...

将异步数据从网页传递到我的窗体 C# .NET 应用程序

C#windows窗体应用程序如何自适应大小

我用c#.net3.5做的WinForm窗体软件,生成了安装程序,在没有.net框架的机子上运行的问题

如何将 System.Web 引用添加到 Windows 窗体应用程序

ASP.NET窗体对话框的实现