.NET Windows应用程序可以压缩为单个.exe吗?

时间:2020-03-06 14:39:21  来源:igfitidea点击:

我对.NET桌面应用程序(使用VisualStudio2005)不太熟悉。是否可以从单个.exe文件运行整个应用程序?

解决方案

是的,我们可以使用ILMerge工具。

有一个名为.NET Reactor的第三方工具可以为我们执行此操作。我没有使用过该工具,因此不确定其效果如何。

我们不得将其拆分为多个程序集(通常是Visual Studio解决方案中的项目)。无论如何,都需要.NET Framework,这是嵌入它的正确方法。

如上所述,我们可以使用ILMerge。

但是,如果我们使用免费的Phoenix保护器,它也可以保护代码,则可能会更容易。

我已经使用.NETZ .NET开源可执行打包程序将EXE和DLL文件打包到单个EXE文件中。这是有关如何将DLL文件打包到一个文件中的命令行示例:

netz -s application.exe foo.dll bar.dll

是的。在.NET中,我们可以将整个应用程序封装为一个EXE文件。只要确保解决方案中只有一个Windows应用程序项目(除设置外就没有其他项目)即可。

由.NET项目创建的EXE文件将不是独立的可执行文件,但它将具有的唯一依赖关系是.NET运行时(除非我们添加对其他DLL程序集的引用)。如果使用。

如果应用程序确实需要引用其他程序集(例如数据访问DLL或者.NET类库DLL项目),则可以使用此处其他发布者引用的工具之一,将EXE和所有引用的DLL组合到一个EXE文件中。但是,常规做法要求仅将EXE文件以及任何相关的DLL部署为单独的文件。在.NET中,依赖DLL的部署非常简单:只需将它们与客户端计算机上EXE文件放在同一文件夹中,即可完成。

最好将应用程序(无论是一个文件还是多个文件)部署为单文件安装程序(setup.EXE或者setup.MSI)。 .NET带有部署项目模板,可以相当轻松地为我们创建安装程序。

稍微偏离主题:我们可以使用NGEN将.NET应用程序编译为本机EXE,但是它仍然取决于.NET运行时。本机编译的优点是可以对某些内容进行预编译,但是我从未见过这种微不足道的性能提升值得关注的情况。

是的,我们可以创建一个EXE文件。有两篇不错的文章是:

  • 如何将所有相关的DLL包含到一个EXE文件中
  • .NET运行时-单个EXE文件

我们可以尝试使用NBox实用程序。