WPF打包成单文件

在开发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>

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

发布时间:2024-08-22
其他阅读

C#桌面应用置顶

Winform和WPF开发中,有时会有需要置顶窗体的需求,本文就介绍怎么使用Win32API进行置顶

查看原文

asp.net core实现一个反向代理

本文将向你展示如何在C#和ASP.NET Core中实现一个反向代理功能。

查看原文

WPF中创建一个矩形圆角动画

WPF 中内置了好几种动画,大多数场景可以坐到开箱即用,不过并没有内置 CornerRadiusAnimation ,本文将会介绍怎么实现一个 CornerRadiusAnimation 动画,实现 BorderCornerRadius 属性动画效果。

查看原文

扩展Serilog实现日志推送平台

最近在完成一个服务管理平台,提供可视化管理车间控制服务,包括服务的启停,日志的查看。在各服务中使用 Serilog 对日志进行记录,推送到服务管理平台,再进行统一分发,各客户端同步查看服务运行日志。

查看原文

个人简介

你好,我是猪头少年,是一名定居在云南的软件工程师,主要的开发语言为 C#JavaScript,涉及 ASP.NET CoreWPFAngularUnity 以及 Babylon.js。平时喜欢自驾出游。欢迎大家联系我。

查看原文