WPF应用程序作为便携式Exe或单个Exe文件

7
我们开发了一个基于WPF的应用程序。我们能够成功地使用安装程序部署应用程序。
有没有办法避免安装呢?是否可以将应用程序作为单个可执行文件而无需安装?

4个回答

4

发布您的应用程序以创建单个exe文件:

  • 右键单击启动项目,选择“发布”。
  • 在发布页面上,展开“文件发布选项”,选择“生成单个文件”。

这将生成一个单独的exe文件,但仍然依赖于客户端上的.Net Core运行时(可以从此处下载:.Net下载页面)。

如果您想要完全不依赖于它,可以在“部署模式”下拉菜单中选择“自包含”。该选项将在您的.exe文件中添加约150MB,但据我所知,客户端不再需要.Net Core。

在这种情况下,我不清楚XP兼容性如何,因为.Net Core支持Win7及以上版本。如果有人测试过,请提供任何信息。

此外,我尚未测试过这是否适用于资源或除dll文件之外的任何其他类型的依赖项。

在Visual Studio Community 2019上测试,项目创建为“WPF App (.Net Core)”,并具有作为“Class library (.Net Standard)”创建的项目作为依赖项。


2
您可以使用ILMerge将依赖项合并到可执行文件或主程序集中。它将合并所有依赖程序集并创建单个程序集文件,您可以部署它。
有各种链接可用于如何使用它(例如this)。
更新:对于WPF应用程序,在运行时加载程序集时存在一个问题。this link提供了解决方案。

1
如果您的WPF应用程序只包含一个项目,那么您可以从项目的bin文件夹中分发生成的.exe文件。单击它将启动应用程序。如果仅供私人使用,则可能可以接受,但对于任何其他项目这样做都是非常不专业的。无论如何,您的操作由您决定,并且可以在以下位置之一找到可执行的DLL,具体取决于当前的“解决方案配置”:AppName> ProjectName> bin> Debug或AppName> ProjectName> bin> Release或AppName> ProjectName> bin> x86> Debug或AppName> ProjectName> bin> x86> Release等。

1
如果您在目标计算机上安装了兼容版本的框架,那么答案是肯定的,但是您需要关注依赖项。如果您不依赖于GAC中的任何内容,则可以将bin目录复制到目标计算机上。如果您真的想要一个单独的.exe文件,请使用ILMerge将所有程序集打包成一个文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接