C#项目中打包文件的三种方式

我们在Visual Studio 编译和打包你的项目时,如何处理文件以及将其放置在哪里,比如现在winform软件界面使用到了一些图标,我们发布项目时,是将这些图标嵌入到exe中还是如何?在vs中"生成操作"的类型决定了编译和打包你的项目的方式,本文就来讲解几种方式。

1、如何设置生成操作

下面有一张图像"香蕉.png"在D:\images1文件夹下

在wpf项目中,右击"属性",添加香蕉.png

鼠标选中"香蕉.png",就能看到下图中的"生成操作"。

选中项目中的文件,这里是"香蕉.png",在"属性"窗口中都可以看到此设置。以下是 WPF 开发中最常见的几种生成操作及其用途:

2.1 无 (None)

当你想使用绝对路径去读取文件时采用这种方式,这种方式操作的结果是:文件包含在项目中,但不参与编译,也不会被复制到输出目录(bin/Debug),相当于对原有的文件不做任何操作。这里要注意"复制到输出目录"选择"不复制"

2.2 内容 (Content)

当你想使用相对路径,比如从程序运行目录下去读取文件时采用这种方式,这种方式操作的结果是:文件不参与编译,但在生成时,会原样复制到输出目录。通常配合 "复制到输出目录" 属性使用(设为"始终复制"或"如果较新则复制")。设置如下图,并且如果编译项目后,香蕉.png文件会被复制到运行目录下,这时候图像文件没有被编译到exe中。

2.3 资源 (Resource)

当你想确保文件永远不会丢失或被用户篡改时采用这种方式,文件会被编译并嵌入到程序集(.exe 或 .dll)内部。成为程序二进制数据的一部分,比如软件的图标可以采用此种方法。

设置如下图,并且如果编译项目后,图像文件会被编译到exe中,这时候你会发现exe变大了。

相关推荐
呆呆敲代码的小Y10 小时前
【游戏开发】Lua 与 C# 交互原理解析
c#·lua·交互·热更新·lua与c#交互·游戏热更新
JAI科研10 小时前
Deepseek Agent Harness教程(七) | Deepseek Harness不是一个内核加一堆插件
开发语言·人工智能·深度学习·算法·自然语言处理·transformer·vllm
用户2986985301410 小时前
PDF 转纯文本(TXT)免费攻略:轻松提取文字内容
人工智能·后端·c#
孙克旭_10 小时前
单链表进阶实操:5 道常考面试题详细解析【Java 实现】
java·开发语言·数据结构·单链表
斑马13910 小时前
Linux软件编程学习笔记(五)——线程
开发语言·php
吴声子夜歌10 小时前
Java——数组和集合(一)
java·开发语言
呆呆敲代码的小Y11 小时前
Lua 上值(UpValue)
开发语言·junit·lua·lua上值·upvalue
呆呆敲代码的小Y11 小时前
【游戏开发】C# 中的迭代器
java·开发语言·c#·迭代器
benchmark_cc11 小时前
K 线数据断层会对回测造成什么影响?从一个缺失交易日看懂量化策略为什么会失真
大数据·开发语言·数据分析·量化·股票数据·quantdash·量化数据源
benchmark_cc11 小时前
数据 API 稳定性为什么会影响量化策略?从数据获取到信号执行的完整分析
开发语言·python·数据分析·量化·股票数据·quantdash·量化数据源