论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
.NET把文件嵌入到程序集中的EmbeddedFile
.NET把文件嵌入到程序集中的EmbeddedFile
石小疯
金牌会员
|
2023-8-29 21:54:35
|
显示全部楼层
|
阅读模式
楼主
主题
912
|
帖子
912
|
积分
2736
简介
有时候我们在发布程序时,不想让客户看到项目中的文件,这时就可以使用.NET的嵌入文件功能(虚拟文件)。在.NET中,虚拟文件(Virtual File)是一种特殊类型的文件,它们在编译时被嵌入到程序集中,而不是作为独立的文件存在于文件系统中。EmbeddedFile是指在编译时将文件内容嵌入到程序集中,并通过虚拟路径来访问的文件。
使用步骤:
1、嵌入的文件配置
首先将要嵌入的文件添加到项目中,我们在vs项目中新建一个名为"dotnet"的文本文件,并右键属性设置其生成操作为 "嵌入的资源"。设置完成右键选择项目 "属性",然后在属性窗口中 "生成" 选项来完成嵌入。如下图:
生成后的文件夹是没有这个文件,如下图
2、文件说明
在代码中可以使用虚拟路径来访问嵌入的文件。虚拟路径是指通过程序集的命名空间和文件名来构建的路径。例如,如果嵌入的文件名为 "dotnet.txt",它位于命名空间为 "Test7" 的程序集中,那么虚拟路径就是 "Test7.dotnet.txt"。
3、用C#代码读取嵌入文件
参考代码如下:
using System;
using System.IO;
using System.Reflection;
using System.Text;
namespace Test7
{
class Program
{
static void Main(string[] args)
{
string embeddedFilePath = "Test7.dotnet.txt";
string fileContent = ReadEmbeddedFile(embeddedFilePath);
Console.WriteLine(fileContent);
}
static string ReadEmbeddedFile(string embeddedFilePath)
{
Assembly assembly = Assembly.GetExecutingAssembly();
//如果跨程序访问或者不确定文件,这里可以判断文件流是否为null
using (Stream stream = assembly.GetManifestResourceStream(embeddedFilePath))
{
if (stream == null)
{
throw new Exception("Embedded文件未发现: " + embeddedFilePath);
}
using (StreamReader reader = new StreamReader(stream))
{
return reader.ReadToEnd();
}
}
}
}
}
复制代码
在上面的示例中,`ReadEmbeddedFile` 方法通过虚拟路径获取嵌入的文件流,并使用 `StreamReader` 读取文件内容。然后,将文件内容打印到控制台。
注意:虚拟文件的路径是区分大小写的,并且要正确地指定命名空间和文件名。此外,如果文件位于不同的程序集中,你需要使用正确的程序集名称来构建虚拟路径。
结语
本文讲述了在 .NET Core 中使用虚拟文件(EmbeddedFile)的基本方法。当然你也可以将任意类型的文件(例如文本文件、图像文件等)嵌入到程序集中,并以使用上面的方式指定虚拟路径的方式访问它们。它的好处是嵌入方便发布程序,尤其是winform桌面类别的程序。希望本文对你有所收获,欢迎留言或者吐槽!
参考:
1、learn.microsoft.com/zh-cn/dotnet/core/extensions/resources
2、chatgpt
来源公众号:DotNet开发跳槽
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
石小疯
金牌会员
这个人很懒什么都没写!
楼主热帖
解决图片无法设置hover,以设置图片的 ...
解决OpenCV的imread/imwrite在Qt环境不 ...
Hive安装与启动
C# GDI+ 画心形 跳动动画
SQL的多表查询
qrtz表初始化脚本_mysql
几个函数的使用例子:更新VBRK-XBLNR, ...
Linux的目录结构
在 NGINX 中根据用户真实 IP 进行限制 ...
堆Pwn:House Of Storm利用手法
标签云
存储
服务器
快速回复
返回顶部
返回列表