【问题标题】:Creating a "portable" .exe (without installer)创建一个“便携式”.exe(没有安装程序)
【发布时间】:2016-05-03 12:30:11
【问题描述】:

我最近编写了一个小程序来确定图片中的数字,它依赖于我使用过的两个库。 (DLL)

由于安全原因,我的目标计算机不允许安装程序,我需要创建一个可移植的 .exe。 .NET 已安装在目标计算机上,但出于某种原因,VS 仍然不包含我在 exe 中使用的库,而是创建了一个包含 setup.exe、一些 .DEPLOY 文件和应用程序清单的应用程序文件夹。

我一般是 VS 和 .NET 的新手,所以这个问题可能很容易回答,但我之所以问,是因为我在 StackOverflow 上都没有发现任何有用的东西,在 Google 上也没有。

【问题讨论】:

  • 听起来您使用的是“deploy”而不是“build”。在 VS 中,您通常可以只获取项目目录的输出(“bin/debug”或“bin/release”)并将其复制到目标机器。
  • 您可以构建您的项目并运行 .exe 文件而无需安装。您可以在 ..\bin\Debug 文件夹中找到的 .exe 文件
  • 除了 Win 8、8.1 和 UWP 应用程序之外,上述两个 cmets 都是正确的。您不会从中获得 exe 文件,并且必须将它们旁加载到所需的 PC 上。
  • 非常感谢,这有帮助。知道我可以复制 Release 文件夹基本上就是我所需要的。

标签: c# .net portability


【解决方案1】:

您可以简单地构建应用程序并复制您的bin/Debug 文件夹,但这仍然意味着您需要多个文件。

要将所有引用合并到可执行文件中,请使用ILMerge。这里是some help calling ILMerge

基本上,在构建之后,您应该执行以下操作:

ilmerge /target:winexe /out:SelfContainedProgram.exe 
    Program.exe ClassLibrary1.dll ClassLibrary2.dll

您只需发送一个文件。

【讨论】:

  • 听起来他在定位他的构建目录时遇到了麻烦,而不是合并所有程序集。该答案将有助于下一步,但不能解决他当前的问题。编辑:Jup,那更好;)
  • 感谢@ManfredRadlwimmer
  • 我之前尝试过 ILMerge,但抛出了一些我无法处理的异常。无论如何感谢您的回答。
  • @thedood 你没有要求一个简单的解决方案,对 ;)
  • 不是我的反对意见,但我只是想提一下@Grappachu 的答案并不正确,实际上是merging WPF apps 时推荐的方法(这甚至在 ILMerge 页面上提到)。跨度>
【解决方案2】:

一种方法是在发布模式下构建您的应用程序(您可以从下拉菜单中选择调试或发布)。然后转到C:\Projects\[ProjectName]\[ProjectName]\bin\Release(您的项目文件夹的位置可能会有所不同)。您会看到一堆文件,但您真正需要的只是 DLL、可执行文件和配置(如果您使用了一个)。如果您将必要的文件保存在应用程序的文件夹中,则无需进行任何设置,只需将它们全部复制到目标计算机上的文件夹中,如果需要创建快捷方式即可。

【讨论】:

  • 烤面包机 很好的答案,但我想再确认一件事。如果目标计算机没有 dotnet 框架(例如 .net 4.6.1)。我们如何将它包含在发布文件夹中。
【解决方案3】:

您可以将所有程序集复制到您想要的任何文件夹中。只需从 Visual Studio 中选择“构建”并将文件从 bin/debug 复制到您的目标文件夹。

但是,您必须确保所有(相对)路径(如果存在)仍然有效,因为您无法确定程序的用户将文件复制到何处。

【讨论】:

    【解决方案4】:

    一种简单的方法是使用7zip Packager,它不需要任何安装程序。但是,VisualStudio 方法可能更可靠。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-19
      • 2011-02-25
      • 2015-06-12
      • 1970-01-01
      • 2018-07-27
      • 2014-04-27
      • 1970-01-01
      • 2011-04-09
      相关资源
      最近更新 更多