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

时间:2013-07-21 11:12:39

标签: c# .net windows exe

我正在使用C#创建一个项目 - .net。从项目生成的'exe'文件不能在没有安装.Net的机器上执行。这个错误突然出现了:

  

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

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

作为项目要求,我想制作一个在每台Windows PC上运行的“exe”,不用安装软件依赖软件 - > .Net FW。就在点击时,s / w exe应该执行。

是否可以从.Net ??

为Windows制作这样的机器独立'exe'

3 个答案:

答案 0 :(得分:2)

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

您最好的方法是使用尽可能旧的框架,例如.NET Framework 3.0。这样,您将使用已经预装在几乎所有正在使用的系统上的框架版本。或者换句话说,您将确保您的程序在尽可能多的系统上运行。只需提供一个指向运行时的链接,以防有人遗漏它。

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

另外,作为替代方案:您是否考虑过使用ClickOnce部署?这将允许您为用户提供他们也不会真正看到的简单且最小的安装程序。它只会下载并安装仍然缺失的依赖项。此内容也适用于任何版本的VisualStudio,甚至是Express版本。

答案 1 :(得分:1)

  

此错误正在弹出

错误。只是友好地提醒用户,您的程序需要.NET 4才能在程序运行之前可用。他会点击“是的,拜托!”一切都在自动解决。

您可以创建安装程序以避免该消息。但是,鉴于你不想这样做,它已经为你照顾它,没有什么意义。

更多关于这一切是什么样的以及为什么它在this answer

中以这种方式运作

答案 2 :(得分:0)

“作为项目要求,我想制作一个可以在每台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。 (OS / 2,GEM和DOS都使用.exe文件,它们之间有些相似之处,但是大多数其他OS不需要任何特定文件扩展名的可执行二进制文件)

因此,由于这个原因,.Net并不是一个糟糕的主意,比.jar,.pl或.py还要多。 (对于* nix软件,您希望可以在Linux,Mac和BSD Unix上运行,甚至是Solaris或HP / UX等都是相对常见的)。如果您以MSIL(而不是x86或x64)为目标,那么.exe将在PPC Windows,DEC Alpha Windows,Itanium Windows和ARM Windows以及其他两个Windows上运行。 (尽管这不是您要问的问题)如果在不依赖WPF或其他Windows特定GUI引擎的情况下进行构建,则只要安装了Mono,它就可以在Mac,Linux和BSD上运行。 (这可能值得您考虑,因为您处于使用状态……Windows版本不支持相应的.Net版本也需要 Mono以这种方式工作)

为此,我建议在Mono(而不是.Net开发环境)中构建命令行可执行文件。 (Mono可执行文件将在.Net上运行比.Net可执行文件在Mono上运行更容易...虽然如果您对导入到源代码的标头中包含的依赖项保持谨慎,则两种方法都可以实现)

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