WPF打包成单文件

发布时间:2024-08-22

在开发WPF程序时,有时我们需要把整个软件打包成一个文件,这样可以方便分发,本文将会介绍怎么把WPF打包成单文件形式。

.Net/.Net Core

在最新的 .Net 项目中,已经提供了单文件打包支持,只需要在项目发布时勾选即可。

https://static.scung.cn/66c0cb60-b879-4fe4-b680-911033f4b828.png

需要注意一点,新的 .Net 项目可以将整个运行时进行打包,分发的时候客户机不需要安装运行时也能运行,但是对于 WPF 程序来说,采取包含运行时发布之后打包的单文件其实并不是只有一个文件,其中还包括了 WPF 运行时一些依赖。只有框架依赖模型打包的才是单个文件

.Net Framework

.Net FrameworkWPF 项目中,并没有内置官方的单文件打包支持,我们需要使用额外的工具来完成

Costura

CosturaFody 的一个插件,Fody 是一个专门处理 .Net 程序集的扩展工具,它允许将程序集的 IL 作为构建的一部分进行操作,Fody 通过扩展插件封装 MSBuildVisual Studio API 功能,而 Costura 的功能就是将依赖项嵌入成资源,从而实现最终编译结果只剩下一个程序集文件。

安装

我们可以从 Nuget 上获取到 Costura 。通过vs的包管理器界面即可安装

https://static.scung.cn/4e21b502-2b14-42c7-a9ad-261a43b81dfd.png

也可以通过程序包管理控制台安装,注意:需要同时安装最新的 Fody

PM> Install-Package Fody
PM> Install-Package Costura.Fody

使用

我们只需要在 Fody 的配置文件中添加对应的配置项即可,配置文件为:FodyWeavers.xml,如果没有新建一个即可

<Weavers>
    <Costura />
</Weavers>

这时候我们在生成项目,就可以得到一个单文件软件,所有的动态库都被嵌入到程序集中了。

其他阅读

WPF中开启虚拟化提高性能

WPF(Windows Presentation Foundation)是一个强大的框架,它能创建高度响应和美观的桌面应用程序。然而,当处理大量数据时,性能问题可能变得显著。为了解决这些问题,我们可以利用虚拟化来提升WPF应用的性能。

查看原文

GUID和UUID

GUID,英文全称为 Global Unique Identifier,意为全局唯一标识符,UUID,英文全称为 Universally Unique Identifier,意为通用唯一标识符,都具有唯一性,GUID也是微软对UUID是的实现。

查看原文

自驾环游抚仙湖

抚仙湖作为云南第三大湖,以前只去过北边几个开发比较好的区域,周末闲来无事,准备自驾完整地环湖一圈,从呈贡出发,沿着国道开到澄江,然后环湖一圈,经过江川后再到澄江,吃完饭后回到呈贡。

查看原文

Entity Framework Core链接Oracle的问题

最近使用 Entity Framework Core 来链接 Oracle 11g 数据库,发现很多 LINQ 语句使用起来都会有问题,查看日志输出发现是生成SQL语句无法被 11g 版本执行,好在Oracle官方已经给我们提供了解决方案。

查看原文

Winsaa 解锁 Windows 时间管理新姿势

了解自我时间分配,从记录每一秒开始。Winsaa 是轻码科技推出的一款 Windows 屏幕应用使用分析软件,它自动精准追踪每个应用的使用时长,并生成可视化报告,帮助你提升工作与学习效率。

查看原文