1

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

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

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

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

是否可以从 .Net 为 Windows 制作这种独立于机器的“exe”?

4

3 回答 3

2

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

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

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

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

于 2013-07-21T11:19:03.410 回答
1

弹出这个错误

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

您可以创建一个安装程序来避免该消息。但是,鉴于您不想这样做,并且它已经为您处理好了,所以没有什么意义。

更多关于这一切的样子以及为什么它在这个答案中以这种方式工作

于 2013-07-21T13:25:37.920 回答
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/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、Itanium Windows 和 ARM Windows 以及其他两个 Windows 上运行。(尽管这不是您要问的)如果您在不依赖 WPF 或其他 Windows 特定 GUI 引擎的情况下构建它,它也可以在 Mac、Linux 和 BSD 上运行,只要它们安装了 Mono。(这可能值得考虑,当你在它的时候......微软不支持适当的.Net版本的Windows版本也需要Mono以这种方式工作)

为此,我建议在 Mono 中构建命令行可执行文件,而不是在 .Net 开发环境中。(Mono 可执行文件将在 .Net 上运行比在 Mono 上运行的 .Net 可执行文件更容易......尽管如果您注意导入到源中的标头中包含的依赖项,则任何一种都是可能的)

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

于 2019-05-29T18:07:20.977 回答