WPF应用程序作为可移植Exe或单个Exe文件

时间:2014-07-10 07:57:58

标签: .net wpf deployment

我们开发了一个基于WPF的应用程序。我们能够使用安装程序成功部署应用程序。

我们有什么方法可以避免安装? 是否可以在不安装的情况下将应用程序用作单个可执行文件?

4 个答案:

答案 0 :(得分:2)

您可以使用ILMerge将依赖项合并到可执行文件或主程序集中。它将合并所有依赖程序集并创建可以部署的单个程序集文件。

有关于如何使用它的各种链接(如this

更新:使用WPF应用程序时,加载程序集运行时会出现一个问题。 this link为其提供了解决方案。

答案 1 :(得分:1)

如果您的WPF应用程序包含单个项目,那么您可以仅从您构建项目时生成的项目的.exe文件夹中分发bin文件。点击它启动您的应用程序。

如果它仅供私人使用,那么这可能是可以接受的,但对任何其他项目来说这样做是非常不专业的。无论哪种方式,您所做的都取决于您,您可以在以下位置之一找到可执行DLL,具体取决于您当前的解决方案配置

  

AppName> ProjectName> bin>调试
  AppName> ProjectName> bin>发布

     

AppName> ProjectName> bin> x86>调试
  AppName> ProjectName> bin> x86>发布

......或类似的。

答案 2 :(得分:1)

如果您在目标计算机上安装了框架并且兼容版本,答案是肯定的,但您必须关心依赖项。如果您不依赖于GAC中的某些内容,则xcopy目标上的bin目录将起作用。如果您确实需要单个.exe文件,请使用ILMerge将所有程序集打包到一个文件中。

答案 3 :(得分:0)

只需发布您的应用并创建一个exe文件即可:

  • 右键单击您的启动项目,然后选择“发布”。
  • 在发布视图上,展开“文件发布选项”,然后选择“生成单个文件”。

这将产生一个单独的exe,但仍取决于客户端上具有.net Core的运行时(可以从此处下载:.Net downloads page)。

如果您希望它完全不依赖,则可以在“部署模式”下拉列表中选择“自包含”。据我所知,此选项将在您的.exe文件上添加〜150MB,但客户端不再需要.Net Core。

在这种情况下,我不知道XP的兼容性,因为Win7向前支持.Net Core。如果有人进行测试,我将不胜感激。

此外,除了dll文件以外,我还没有使用资源或任何其他类型的依赖项对此进行过测试。

在Visual Studio Community 2019上进行了测试,该项目创建为“ WPF应用程序(.Net Core)”,并且具有作为依赖项的项目创建为“类库(.Net标准)”