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
其他阅读

命令行打包.net项目

.net 日常开发中,我们接触最多的就是 Visual Studio ,它是微软为了 .net 平台专门打造的 IDE (集成开发环境),为整个 .net 平台开发带来了无与伦比的图形化体验,但是有时候,我们也会遇到需要通过命令行来生成 .net 项目的情况,本文会介绍几种命令行打包的姿势。

查看原文

Entity Framework Core链接Oracle的问题

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

查看原文

新版本.Net关于Process.Start的问题

.Net 开发中,试用 Process.Start() 来启动一个新进程,当我们传入的是具体文件或者链接的时候,系统也会根据默认打开方式打开对应的进程。但是在新版本的 .Net 中,试用 Process.Start() 来打开文件或者链接的时候,会抛出 System.ComponentModel.Win32Exception 的错误,提示系统找不到指定的文件。

查看原文

Web前端中实现自定义右键菜单

在原生的桌面应用中,右键菜单是个很常见也很常用的东西,但是在Web应用中,由于浏览器自带了右键菜单,所以我们很少见到应用有自己的右键菜单,但不常见并不代表没有,本文就会介绍一个右键菜单的实现。

查看原文

Nginx重定向HTTP到HTTPS

HTTP协议以纯文本形式进行数据的交互,数据明文传输,容易被监听,窃取和伪造,HTTPS在HTTP的基础上,使用了TLS/SSL对通信过程进行加密,数据得到了有效的保护,就算被拦截到也无法获取信息,更没法实施中间人攻击。本文将会介绍如何在Nginx中配置HTTP重定向到HTTPS。

查看原文