“作为项目要求,我想制作一个在每台 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/ )