如何将 .NET exe 转换为不需要 .NET Framework 运行的 Windows 二进制文件?
Posted
技术标签:
【中文标题】如何将 .NET exe 转换为不需要 .NET Framework 运行的 Windows 二进制文件?【英文标题】:How to convert a .NET exe to windows binary which does not require .NET Framework for running? 【发布时间】:2011-04-03 16:36:59 【问题描述】:我有一个在 Visual Studio 2010 下编译的 exe 文件(它的源项目是带有 C# 的 Windows 窗体应用程序)。 我必须将此 exe 嵌入到 installsheild msi 安装文件中,并且它可以安装在任何 Windows 操作系统上(支持 XP 和更高版本)。但是为了运行我的 exe,最终用户首先必须在他们的系统上安装 Microsoft .net framework 4。 我正在寻找一种解决方案,将我的 .NET 本机 exe 转换为无需安装 .NET Framework 即可执行的 .NET-FREE exe。 有没有办法做到这一点? (我的意思是一种方式期望mono-project)
【问题讨论】:
Is there some way to compile a .NET application to native code?的可能重复 即使在技术上可行(比如虚拟化注册表和磁盘,我什至没有提到支持问题...),许可证也会阻止您重新分发所需的 .NET 程序集。它们必须由 Microsoft 的官方安装程序安装。 问题是安装 .NET 框架还是升级它? SP2 之后的大多数 XP 版本都安装了 .NET,而所有以后的版本都将其作为基础包。如果它只是升级它的问题,为什么不使用单击一次来处理包确定? 最好尝试将 Microsoft 的 .NET 框架安装程序嵌入到您的设置中。恕我直言,每个 Windows 机器上都应该预装最新的 .NET 框架版本。 【参考方案1】:Mono 至少在某些平台上支持提前编译。您也许还可以使用您的程序部署单声道。但我不确定 Mono 是否支持 Windows 上的 WinForms。
我认为 Microsoft 的 .net 实现不支持这种部署,所以你不走运。
【讨论】:
【参考方案2】:您无法创建无 .NET 的应用程序,但您可以尝试使用 ILMerge 实用程序尽可能降低 .NET 版本要求。例如,我成功地使用它来将 3d 方工具要求从 .NET 4.5 降低到 4.0。
该工具有很多参数,但通常您只需要以下参数:
ILMerge.exe /v4 /useFullPublicKeyForReferences /out:target.exe source.exe sourceLib1.dll sourceLib2.dll
现在确定这是否是您的问题,但在某些情况下可能会有所帮助。
【讨论】:
以上是关于如何将 .NET exe 转换为不需要 .NET Framework 运行的 Windows 二进制文件?的主要内容,如果未能解决你的问题,请参考以下文章
C# 如何将代码附加到正在运行的 .NET .EXE 的末尾,最好是从该 .EXE 内部?
VB.net 如何将数据转换为位图(Bitmap)所需要的byte()数组?急!!!!