【问题标题】:How to convert a .NET exe to windows binary which does not require .NET Framework for running?如何将 .NET exe 转换为不需要 .NET Framework 运行的 Windows 二进制文件?
【发布时间】: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

【问题讨论】:

  • 即使在技术上可行(比如虚拟化注册表和磁盘,我什至没有提到支持问题...),许可证也会阻止您重新分发所需的 .NET 程序集。它们必须由 Microsoft 的官方安装程序安装。
  • 问题是安装 .NET 框架还是升级它? SP2 之后的大多数 XP 版本都安装了 .NET,而所有以后的版本都将其作为基础包。如果它只是升级它的问题,为什么不使用单击一次来处理包确定?
  • 最好尝试将 Microsoft 的 .NET 框架安装程序嵌入到您的设置中。恕我直言,每个 Windows 机器上都应该预装最新的 .NET 框架版本。

标签: .net binary exe native


【解决方案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
    

    现在确定这是否是您的问题,但在某些情况下可能会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-05
      • 2014-02-10
      • 1970-01-01
      • 2011-09-14
      • 2010-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多