WPF打包成单文件
在开发WPF程序时,有时我们需要把整个软件打包成一个文件,这样可以方便分发,本文将会介绍怎么把WPF打包成单文件形式。
.Net/.Net Core
在最新的 .Net
项目中,已经提供了单文件打包支持,只需要在项目发布时勾选即可。
需要注意一点,新的 .Net
项目可以将整个运行时进行打包,分发的时候客户机不需要安装运行时也能运行,但是对于 WPF
程序来说,采取包含运行时发布之后打包的单文件其实并不是只有一个文件,其中还包括了 WPF
运行时一些依赖。只有框架依赖模型打包的才是单个文件。
.Net Framework
在 .Net Framework
的 WPF
项目中,并没有内置官方的单文件打包支持,我们需要使用额外的工具来完成
Costura
Costura
是 Fody
的一个插件,Fody
是一个专门处理 .Net
程序集的扩展工具,它允许将程序集的 IL 作为构建的一部分进行操作,Fody
通过扩展插件封装 MSBuild
和 Visual Studio API
功能,而 Costura
的功能就是将依赖项嵌入成资源,从而实现最终编译结果只剩下一个程序集文件。
安装
我们可以从 Nuget
上获取到 Costura
。通过vs的包管理器界面即可安装
也可以通过程序包管理控制台安装,注意:需要同时安装最新的 Fody
PM> Install-Package Fody
PM> Install-Package Costura.Fody
使用
我们只需要在 Fody
的配置文件中添加对应的配置项即可,配置文件为:FodyWeavers.xml,如果没有新建一个即可
<Weavers>
<Costura />
</Weavers>
这时候我们在生成项目,就可以得到一个单文件软件,所有的动态库都被嵌入到程序集中了。