如何从.Net使机器独立和.Net框架(依赖)独立的'EXE'文件



我正在C#-.Net上创建一个项目。从该项目生成的"exe"文件在尚未安装.Net的计算机上不可执行。此错误弹出:

要运行此应用程序,您必须首先安装以下版本的.NET.Framework之一:V4.0.30319

我不想制作一个安装程序文件,在PC上安装依赖文件(.Net FW和其他…)。

根据项目要求,我想制作一个在每台Windows PC上运行的"exe",而无需安装软件依赖软件->.Net FW。单击时,应执行s/w exe。

有可能从.Net为Windows制作这样一个独立于机器的"exe"吗??

这是不可能的(有一些工具可以让你捆绑依赖项,但我不建议使用它们)。

对此,最好的方法是使用尽可能旧的框架,例如.NET framework 3.0。通过这种方式,您将使用几乎所有使用中的系统上都已预装的框架版本。换句话说,您将确保您的程序在尽可能多的开箱即用的系统上运行。只需提供运行时的链接,以防有人仍然错过它。

还要注意的是,与.NET Framework的前几次迭代相比,这要好得多:这些可执行文件只会崩溃,并显示一条复杂的错误消息,而不会告诉用户它只是缺少运行时。随着时间的推移,情况有了很大的改善。

此外,作为一种替代方案:您是否想过使用ClickOnce部署?这将允许您为用户提供一个他们不会真正看到的简单而最少的安装程序。它将只下载和安装仍然缺少的依赖项。此外,它内置在任何版本的VisualStudio中,即使是Express版本也是如此。

弹出此错误

这不是一个错误。只是一个友好的提醒用户,你的程序需要.NET 4可用,然后你的程序才能运行。他会点击"是的,请!"一切都会自动解决。

您可以创建一个安装程序来避免出现此消息。但是,考虑到你不想这么做,而且它已经帮你解决了,那就没有什么意义了。

更多关于这一切看起来像什么以及为什么它在这个答案中以这种方式工作的信息

"根据项目要求,我想制作一个在每台Windows PC上运行的‘exe’,而无需安装软件或依赖软件->.Net FW。只要单击,s/w exe就会执行。".

1) 如果这个版本的Windows没有任何.Net Framework怎么办?

2) 如果Windows版本不支持任何版本的.Net Framework,该怎么办?(.Net直到Win2K/ME时代才出现,Windows 95不会采用大多数.Net框架,3.1/3.5甚至不会采用Mono)

"有可能从.Net为Windows制作这样一个独立于机器的‘exe’吗?"

听起来你正试图制作一个类似Setup.exe的东西,它可以是一个单独的下载,它将在事后解决细节。。。事实上,"独立于机器"甚至使C++也不合适,因为C++将在Windows、Mac、Linux、Unix以及一系列具有x86、x64、i64、PPC、ARM24/32/64等的更奇特的系统上工作(所有这些系统都安装了Windows,在野外,但非常罕见),它将针对单个CPU架构和操作系统。(OS/2、GEM和DOS都使用.exe文件,它们之间有一些相似之处,但大多数其他操作系统不需要任何特定的可执行二进制文件扩展名)

因此,由于这个原因,.Net并不是一个糟糕的想法,就像.jar、.pl或.py一样。(这对于你希望在Linux、Mac和BSD Unix上运行的*nix软件来说是相对常见的……甚至可能是Solaris或HP/UX等。)如果你的目标是MSIL,而不是x86或x64,那么你的.exe将在PPC Windows、DEC Alpha Windows、安腾Windows和ARM Windows以及其他两个上运行。(尽管这不是你所问的)如果你在不依赖WPF或其他特定于Windows的GUI引擎的情况下构建它,它也可以在Mac、Linux和BSD上运行,只要它们安装了Mono。(这可能值得考虑,当你在做的时候…微软的Windows版本不支持适当的.Net版本也需要Mono才能以这种方式工作)

为此,我建议在Mono中构建一个命令行可执行文件,而不是在.Net开发环境中。(Mono可执行文件在.Net上运行会比在Mono上运行的.Net可执行文件更容易……尽管如果你小心导入源文件的标头中包含的依赖项,两者都有可能)

我在这方面取得了一些成功,编写了一个后台服务,可以安装在Windows或Linux上,并使用相同的二进制可执行文件。我使用了MonoDevelop。(https://www.monodevelop.com/)然而,它实际上只是围绕Mono核心开发工具的一个华而不实的IDE。(https://www.mono-project.com/)

相关内容

  • 没有找到相关文章

最新更新